您尚未登录,请登录后浏览更多内容! 登录 | 立即注册

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 13857|回复: 0
打印 上一主题 下一主题

[centos] 用Nginx做端口转发(反向代理)

[复制链接]
跳转到指定楼层
楼主
发表于 2020-2-25 05:46:09 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
有时我们会使用一些java或node应用,但又不想让他们直接监听80端口,这时就需要用到端口转发* p( W$ x2 |# k6 A3 @5 z) n
- N% Z# Q4 l  S: M
本文中,我们介绍Nginx如何做端口转发,还有各种转发规则
  y3 P0 A7 W% S+ T
& I, t  y0 u# g将域名转发到本地端口
( H# j2 ^) q& S: f首先介绍最常用的,将域名转发到本地另一个端口上7 y8 f# X. q& u) D
  1. server{* R. c# n# ?/ e
  2.   listen 80;
    4 s1 s0 L7 P' h) b
  3.   server_name  tomcat.cncml.com;" [4 T% M9 n  }4 W- u: k
  4.   index  index.php index.html index.htm;7 R) ]/ j: N3 V, X3 K! R/ a
  5. 3 g5 T9 E% ^8 ?* U2 b' B
  6.   location / {
    . G) }- K$ f: N, O, J; z8 l! U. e: L
  7.     proxy_pass  http://127.0.0.1:8080; # 转发规则
    - b, d- M( a% _# V1 c
  8.     proxy_set_header Host $proxy_host; # 修改转发请求头,让8080端口的应用可以受到真实的请求
    : I. G( i9 e) U: @0 ~" r$ ^3 E0 j
  9.     proxy_set_header X-Real-IP $remote_addr;8 u9 @+ {# B# d+ ~! |& M
  10.     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;3 f& U* T# N- c9 J- ^% E# O: l
  11.   }  {7 x" o# b- M; ?- o
  12. }
复制代码
这样访问 http://tomcat.cncml.com 时就会转发到本地的 8080 端口
4 s+ p0 v' A, C4 E2 j1 M8 A! o' v( l. J
" \8 F# J# M" J4 ^8 S0 x将域名转发到另一个域名2 k. a4 R& S. B& g
  1. server{0 C- F! J" Q+ A' r, B6 E
  2.   listen 80;
    + E: m# ]* o1 s
  3.   server_name  baidu.cncml.com;
    % u7 L/ g/ ~! g5 a! s4 h
  4.   index  index.php index.html index.htm;; `- r- I# a. c/ z) f% r! i" Z
  5. , V# v3 C5 ~( x  k+ `" k
  6.   location / {( v. A! v6 u4 g) ?: k
  7.     proxy_pass  http://www.baidu.com;
    ; [; [1 B! P0 E* h7 P
  8.     proxy_set_header Host $proxy_host;( P% B1 r$ E5 ]) ?
  9.     proxy_set_header X-Real-IP $remote_addr;: o4 l, R/ N8 K- `# e9 }8 I
  10.     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    ' g# C4 l( O2 \! l5 ^: n# \$ k
  11.   }
    # w) G3 x* c. a: I2 |  ]
  12. }
复制代码
[size=0.6]这样访问 http://baidu.cncml.com 时就会转发到 http://www.baidu.com
本地一个端口转发到另一个端口或另一个域名
- a# D: `, |4 G/ C* @
  1. server{
    4 \1 k1 B+ }8 @
  2.   listen 80;  B- |& p7 B' C3 D% \6 n8 L8 C
  3.   server_name 127.0.0.1; # 公网ip* z( _2 D4 m" F/ Q6 D) C
  4.   index  index.php index.html index.htm;
    9 ^1 `" E8 ~1 X: C! K* \" n

  5. % y# M  F& Y5 \- D. ], P" H, j# g6 `
  6.   location / {
    2 O, Y9 `: \/ J. L8 b& l
  7.     proxy_pass  http://127.0.0.1:8080; # 或 http://www.baidu.com
    & y$ }, o2 C/ q
  8.     proxy_set_header Host $proxy_host;/ ~+ ?5 G; w$ P
  9.     proxy_set_header X-Real-IP $remote_addr;
    # L) E8 Z& S. U5 k8 t" D( `/ f$ B
  10.     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;4 }5 E! V- M0 ]' W) E/ [2 P# B2 I
  11.   }6 S  \/ u7 i8 L0 Q% Z: j- j
  12. }
复制代码
这样访问 http://127.0.0.1 时就会转发到本地的 8080 端口或 http://www.baidu.com( m5 k4 P7 [, e3 g

! h" d) b7 u& D8 d7 u2 g加 / 与不加 /
+ X% O2 u5 q3 J8 ]在配置proxy_pass代理转发时,如果后面的url加/,表示绝对根路径;如果没有/,表示相对路径5 Y8 H. u) `* `" I, }4 C4 k  E
+ \0 a7 K3 w9 T$ _0 z
例如
  l# R* `' K. J2 Y- D
2 `5 v& J1 F5 ]# ]8 v加 /
( q3 n8 O% T: O# [
  1. server_name cncml.com. e8 Q2 n9 w$ o; y+ L
  2. location /data/ {  Y3 {7 ~5 r& V8 l/ ~3 o' ]
  3. proxy_pass http://127.0.0.1/;
    ( A$ ]$ R. s$ a8 ^3 e" H
  4. }
复制代码
访问 http://cncml.com/data/index.html 会转发到 http://127.0.0.1/index.html
  J& Y. U* F) E! y* O9 @4 [$ V9 L1 e: D5 p0 t  Y
不加 /9 W8 o3 R6 n( M6 ?4 [
  1. server_name cncml.com
    ' C2 L4 O2 Y7 Y+ F' Z. x+ s
  2. location /data/ {% O% z1 a/ |4 K1 Q
  3. proxy_pass http://127.0.0.1;
    ' ^) F- u  f3 }; [
  4. }
复制代码
访问 http://cncml.com/data/index.html 会转发到 http://127.0.0.1/data/index.html. M) |! f) A' y/ ~

" a$ y( x$ V1 M  [+ P& @
游客,如果您要查看本帖隐藏内容请回复
7 r! l6 w0 }# S" w/ J! T) w4 s0 [
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2026-8-4 11:29 , Processed in 0.055578 second(s), 20 queries .

Copyright © 2001-2026 Powered by cncml! X3.2. Theme By cncml!