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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

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

: m& o  j. C% b! u7 E% W& a本文中,我们介绍Nginx如何做端口转发,还有各种转发规则8 o3 q( A$ n  b3 w) g
& q; C# j' ~1 C4 y$ u
将域名转发到本地端口
2 m6 `2 t0 k+ h  Z首先介绍最常用的,将域名转发到本地另一个端口上1 J6 f  k) }8 l9 T& Q% S
  1. server{  d3 j+ P; Y, v9 W0 V6 o  G9 J1 ^
  2.   listen 80;
    7 P1 g! V9 q" f
  3.   server_name  tomcat.cncml.com;
    8 m$ @7 Y$ S; A& y8 @  b, R( G
  4.   index  index.php index.html index.htm;5 n+ H* u" I! k. r: |  o* v( t( ?
  5. $ d0 t( G" {; s* Y
  6.   location / {
    8 [- H/ _% Z7 t. p
  7.     proxy_pass  http://127.0.0.1:8080; # 转发规则: ~: c5 {1 N2 H+ j
  8.     proxy_set_header Host $proxy_host; # 修改转发请求头,让8080端口的应用可以受到真实的请求( I1 R% r' l( Y' g. ]
  9.     proxy_set_header X-Real-IP $remote_addr;
    ( ~4 _  `" U. @
  10.     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;& s" N1 r+ M+ j1 ~7 i1 Q% {: r6 m
  11.   }( ^: h; {6 c& m; N$ H% y7 p
  12. }
复制代码
这样访问 http://tomcat.cncml.com 时就会转发到本地的 8080 端口
4 r. g, O! t5 u/ H
; p  D1 @  t! K! R- l: ~" ]/ G将域名转发到另一个域名
! W4 O9 O* n. _* m2 T& L# B
  1. server{
    % I+ `! s8 u" Y0 w3 z# N
  2.   listen 80;
    ( S7 A3 E. i( b8 e& W% _, d
  3.   server_name  baidu.cncml.com;
    3 D: L! o+ U; t6 K9 v9 ]
  4.   index  index.php index.html index.htm;) N5 g( ]$ }$ e+ b* G* F5 w4 |

  5. ; a* K9 F, X( a. {1 W
  6.   location / {
    % d- [& ~5 P) L' Y) W7 [
  7.     proxy_pass  http://www.baidu.com;$ }6 D, c7 c; W* e/ h
  8.     proxy_set_header Host $proxy_host;
      E  \+ |- U7 o! H6 u- {+ l" n
  9.     proxy_set_header X-Real-IP $remote_addr;' o/ q1 o4 @5 R0 ^+ n
  10.     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;9 s& \8 i6 N; q! [+ H
  11.   }5 h: A( z2 z/ ^. ]$ T  _$ o. x
  12. }
复制代码
[size=0.6]这样访问 http://baidu.cncml.com 时就会转发到 http://www.baidu.com
本地一个端口转发到另一个端口或另一个域名
' Y/ B$ c& E* u( b* [5 X
  1. server{
    4 L7 S. d* U7 T4 f+ Y+ L
  2.   listen 80;9 y6 Y( O* |7 B
  3.   server_name 127.0.0.1; # 公网ip$ J% V% X' e0 Q: V) j! D( Z
  4.   index  index.php index.html index.htm;6 l. J% j2 }+ C3 L
  5. . c" u2 O4 k& h% }
  6.   location / {
    % h% o$ ?1 K) d, n  h4 D
  7.     proxy_pass  http://127.0.0.1:8080; # 或 http://www.baidu.com
    4 D. p% L2 b6 ~0 Q0 I4 L/ I; @$ |
  8.     proxy_set_header Host $proxy_host;7 h1 j6 C. L5 @
  9.     proxy_set_header X-Real-IP $remote_addr;: w8 A7 f' |6 _! m5 o
  10.     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    ! ?1 s2 N6 m* I! b
  11.   }
    " g- m, S0 y  F3 B7 X! S. D
  12. }
复制代码
这样访问 http://127.0.0.1 时就会转发到本地的 8080 端口或 http://www.baidu.com
6 D! C2 o& L" a5 H9 a- i, G- E  [  z  _# v1 r, H
加 / 与不加 /, G5 t6 p  f# _* t- {+ S  W3 n
在配置proxy_pass代理转发时,如果后面的url加/,表示绝对根路径;如果没有/,表示相对路径9 N% ~1 ~: n% @% w

0 j+ ]7 {' M) o8 x* f例如
- u# S5 O+ j! [, a9 s/ F6 O% F! w, s' W2 X
加 /8 H6 \/ S+ r+ m* i; M% S
  1. server_name cncml.com3 w3 @; x  t( Z
  2. location /data/ {
    7 X$ o( l4 q" y% r
  3. proxy_pass http://127.0.0.1/;
    4 }: Z8 m- h- t. r# {8 X# G+ }
  4. }
复制代码
访问 http://cncml.com/data/index.html 会转发到 http://127.0.0.1/index.html
* k2 r) j  f) j& A+ o6 S/ d7 p5 F: H2 E. d1 F0 z. h
不加 // s& t7 {- \8 `6 v; ^% p
  1. server_name cncml.com
    ! M' i, L2 I+ `  K/ _
  2. location /data/ {
    ! b) t; S- F( i$ H8 H
  3. proxy_pass http://127.0.0.1;& g2 J( A8 J0 y8 D. W5 [5 y
  4. }
复制代码
访问 http://cncml.com/data/index.html 会转发到 http://127.0.0.1/data/index.html
5 p4 a- M$ t; b& b, f5 n
! q. [( k  V1 _
游客,如果您要查看本帖隐藏内容请回复
$ X3 E/ t8 n# e# Z% [
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2024-5-7 08:07 , Processed in 0.137934 second(s), 19 queries .

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