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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2020-2-25 05:46:09 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
有时我们会使用一些java或node应用,但又不想让他们直接监听80端口,这时就需要用到端口转发
& m+ \0 \& {/ k$ }
5 }6 ]' ^+ A$ d: t: d本文中,我们介绍Nginx如何做端口转发,还有各种转发规则  b. O4 N2 O1 [9 U* ?" P+ d
) S+ P% V, g3 A# x* b( W
将域名转发到本地端口% a' Q& i+ H3 n# W; E
首先介绍最常用的,将域名转发到本地另一个端口上# Q/ l- u5 ~; j# ^7 T
  1. server{
      ?) d  [" `% r
  2.   listen 80;
    " G' y% ?1 o6 j9 l6 e) p
  3.   server_name  tomcat.cncml.com;& ]8 J; L- H0 k, r) t4 B
  4.   index  index.php index.html index.htm;
    ! {4 I3 R- @+ D* ~) M" p; c
  5. 0 R& f, o; a) I0 y
  6.   location / {$ k+ R* R! K2 I6 K0 g, T
  7.     proxy_pass  http://127.0.0.1:8080; # 转发规则2 h. e6 }' W8 z9 d/ S
  8.     proxy_set_header Host $proxy_host; # 修改转发请求头,让8080端口的应用可以受到真实的请求/ U3 U1 y& e$ `7 a
  9.     proxy_set_header X-Real-IP $remote_addr;
    ( A+ e: T, L* p/ w) O0 v
  10.     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;# P8 d, k% |) |+ Y/ m
  11.   }
    0 M9 ^& q8 H: Y- X! r6 e& q; q8 h0 s. U
  12. }
复制代码
这样访问 http://tomcat.cncml.com 时就会转发到本地的 8080 端口2 y7 n- o' l# I

$ [7 F! z9 B3 s: n将域名转发到另一个域名& D" J1 H# Z/ ]+ H. ^4 _% l
  1. server{
    6 S" H8 O8 a  e: y) [/ B7 Q2 o& x
  2.   listen 80;. {7 b/ j2 m# f5 {' t
  3.   server_name  baidu.cncml.com;
    $ c8 `: {& v7 C) w& O+ V
  4.   index  index.php index.html index.htm;
    / k5 n, T+ j; t8 o
  5. # |1 a* R- b7 k; j# }
  6.   location / {
    1 Q3 U( J. I6 N1 ]
  7.     proxy_pass  http://www.baidu.com;: U. f6 J3 @- v8 e. e* V  i7 f$ q( g
  8.     proxy_set_header Host $proxy_host;2 T2 i3 l5 P' L; m; A, f
  9.     proxy_set_header X-Real-IP $remote_addr;
    0 n3 \6 D0 r( S, n% S  o: J$ G
  10.     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    & }, r3 P7 c5 z+ X& k1 R' g( g$ \, b
  11.   }
    8 _* p$ a; g; a7 V
  12. }
复制代码
[size=0.6]这样访问 http://baidu.cncml.com 时就会转发到 http://www.baidu.com
本地一个端口转发到另一个端口或另一个域名7 j4 t4 _8 ?5 z! C6 e
  1. server{8 j& q" n) A9 R( t8 Q$ [" U9 Y8 f
  2.   listen 80;# ~! E0 m6 x% `" |! A
  3.   server_name 127.0.0.1; # 公网ip
    ) M1 Z! S9 m, T' h2 W( J4 c* H
  4.   index  index.php index.html index.htm;
    ( Z3 r  B" |% A+ u

  5. ; u) t' ]8 d% L  S/ O; f% {# m: N
  6.   location / {6 p) R* h$ H7 O0 z/ m
  7.     proxy_pass  http://127.0.0.1:8080; # 或 http://www.baidu.com
    - ~4 a6 Z- H' a' g0 @
  8.     proxy_set_header Host $proxy_host;
    4 p# J2 n1 ^; H
  9.     proxy_set_header X-Real-IP $remote_addr;
    " W& `8 s/ |  t* z& D5 u
  10.     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;% X1 B( I0 f( W3 j# D. g
  11.   }3 H% f- B- W4 k+ D' p; m: D
  12. }
复制代码
这样访问 http://127.0.0.1 时就会转发到本地的 8080 端口或 http://www.baidu.com2 @4 F! x" U. o8 j
7 l0 u" g: L$ n6 J
加 / 与不加 /& k, g4 n1 A# ]8 |6 }& \
在配置proxy_pass代理转发时,如果后面的url加/,表示绝对根路径;如果没有/,表示相对路径4 K" m, B; V! o' n) F

6 A7 q  p7 r1 t+ P# s( i例如
. u! |" g% P+ S8 h! A& K
8 \7 n" i* r+ O加 /
3 X1 R3 U8 l) r4 ~. m& D. b4 \
  1. server_name cncml.com
    2 U  K1 R0 K0 a1 f! I
  2. location /data/ {
    ' J4 K/ R6 \  f* x. M' M' n% q0 d
  3. proxy_pass http://127.0.0.1/;
    3 ^( Z+ W8 t7 P* u. h8 U
  4. }
复制代码
访问 http://cncml.com/data/index.html 会转发到 http://127.0.0.1/index.html9 D+ z0 j+ I+ ]! e' h. Z

$ r  R+ Z3 A9 D/ a6 K不加 /% |+ w+ K6 `! ]
  1. server_name cncml.com# P( T7 S, `( ^+ R
  2. location /data/ {
    & k$ g9 f3 G8 E9 O
  3. proxy_pass http://127.0.0.1;
    " C4 K4 I7 x4 q; L5 }# b8 c. i' `
  4. }
复制代码
访问 http://cncml.com/data/index.html 会转发到 http://127.0.0.1/data/index.html. P: _8 t, B5 x# Y/ N
: m4 n; z# A2 X
游客,如果您要查看本帖隐藏内容请回复

- c- h0 x2 e. G' l3 d9 A$ E
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2024-5-20 00:13 , Processed in 0.111983 second(s), 20 queries .

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