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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2020-2-25 05:46:09 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
有时我们会使用一些java或node应用,但又不想让他们直接监听80端口,这时就需要用到端口转发3 w0 \( k+ Q; c

5 {, x2 p. C2 L本文中,我们介绍Nginx如何做端口转发,还有各种转发规则4 g5 B- \3 W) B( b8 _! r

5 S0 h6 b7 |) w1 w& H将域名转发到本地端口
+ [6 a7 ]! @7 A7 }* c首先介绍最常用的,将域名转发到本地另一个端口上
0 Q' M# C  G; A9 ?2 h6 X, A) }" T5 P
  1. server{
    6 ?- q& J: `# i. d: G
  2.   listen 80;
    ( o; K* {! V- P- y
  3.   server_name  tomcat.cncml.com;- n! ^: \0 u. L0 l% Z
  4.   index  index.php index.html index.htm;
    + Q1 e( v6 W+ g: J% a9 e) `; j

  5. 7 G8 n  h7 c/ L% e: Y( e6 w5 k
  6.   location / {
    1 h; y* I" w: u% Z5 H& b' |1 s
  7.     proxy_pass  http://127.0.0.1:8080; # 转发规则7 s+ e( c: M/ m' e
  8.     proxy_set_header Host $proxy_host; # 修改转发请求头,让8080端口的应用可以受到真实的请求" O. I  e* c0 j9 a9 T, i
  9.     proxy_set_header X-Real-IP $remote_addr;
    9 Z) o4 @2 e' z8 P% F
  10.     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;. \* R! p' _, N! X! q
  11.   }( j7 e6 Z8 K& I0 C
  12. }
复制代码
这样访问 http://tomcat.cncml.com 时就会转发到本地的 8080 端口
* K$ z" l% a/ L2 {  o  [  o" O3 c% R& ], F" h
将域名转发到另一个域名: P3 b1 O5 t/ G7 X1 R7 [) E/ @
  1. server{
    $ ^) p" W" A" F2 V9 o
  2.   listen 80;1 b  z: `4 k- B# v* }
  3.   server_name  baidu.cncml.com;/ x2 v5 l# n  w4 o0 U$ P& \$ `
  4.   index  index.php index.html index.htm;) v! S+ g2 K' C  t# R3 S3 M. z

  5. : r. x3 w4 }: z1 \0 y
  6.   location / {$ R2 ?! V* \7 G: A$ S
  7.     proxy_pass  http://www.baidu.com;9 u  g4 K7 `, H) d; h; G
  8.     proxy_set_header Host $proxy_host;/ i/ f8 ^" F5 o, Z( S1 Y
  9.     proxy_set_header X-Real-IP $remote_addr;
    ) f; C0 c+ z6 v
  10.     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;/ b$ p3 z; i% g! k" O
  11.   }
    2 ?' y- z% d+ c
  12. }
复制代码
[size=0.6]这样访问 http://baidu.cncml.com 时就会转发到 http://www.baidu.com
本地一个端口转发到另一个端口或另一个域名& `: V7 I- p7 b- }( J6 c
  1. server{
    5 W  {9 T  W1 Q, F
  2.   listen 80;
    " ]& D5 `. z& J& G
  3.   server_name 127.0.0.1; # 公网ip4 d) n- s' V9 D9 s3 H2 U: M
  4.   index  index.php index.html index.htm;
    0 \- Z- Q7 C/ T1 x+ v$ w
  5. 4 C8 a. a% P7 T! a5 c) x; E( s
  6.   location / {
    $ A( S/ S; m  O5 z8 b
  7.     proxy_pass  http://127.0.0.1:8080; # 或 http://www.baidu.com
    % l+ ]$ b) m  w( l0 z+ Q
  8.     proxy_set_header Host $proxy_host;& |! a0 J. q- ^
  9.     proxy_set_header X-Real-IP $remote_addr;; _' f9 y/ {2 G# h* F* ?
  10.     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;% ~! U6 R  O3 C7 h9 F
  11.   }1 V! S0 M" Z8 O  P6 Z* G- [- b
  12. }
复制代码
这样访问 http://127.0.0.1 时就会转发到本地的 8080 端口或 http://www.baidu.com& [9 j, h, I- G( _
, V& Q( s9 u; g
加 / 与不加 /  F- N' e* X9 \$ Y) x
在配置proxy_pass代理转发时,如果后面的url加/,表示绝对根路径;如果没有/,表示相对路径
& e/ J2 c3 B  n: n5 e, ]& L3 h" X4 T: E* I7 D  i
例如! g2 H% l; \8 B
9 R  l% l- z# H: a- w' ?- m: n' b
加 /! m& f* @/ s9 H9 v- D
  1. server_name cncml.com$ V6 ?# y+ n# _+ X
  2. location /data/ {
    + P6 j! s9 b0 k. l  I8 H9 }. ~
  3. proxy_pass http://127.0.0.1/;
    ( G3 I% N" _  N  O3 y9 v/ t' e
  4. }
复制代码
访问 http://cncml.com/data/index.html 会转发到 http://127.0.0.1/index.html$ d+ u# J% A# |/ T% E3 T

( {! t0 g. ]  }* c不加 /8 t* a' A0 E* [$ ?1 ^
  1. server_name cncml.com, b# B( M/ u3 n; y* n6 S, c$ Y
  2. location /data/ {& q4 {9 Q7 {! @6 K% b
  3. proxy_pass http://127.0.0.1;* C0 Q# J! H7 _: X$ S5 S
  4. }
复制代码
访问 http://cncml.com/data/index.html 会转发到 http://127.0.0.1/data/index.html% A" X$ ~3 T, T2 `

) |7 W  |% f/ D0 z8 q9 k
游客,如果您要查看本帖隐藏内容请回复
' K) w4 q! ?# w9 T5 H. Z6 z4 E; ~
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2024-4-26 17:56 , Processed in 0.137425 second(s), 21 queries .

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