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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2020-2-25 05:46:09 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
有时我们会使用一些java或node应用,但又不想让他们直接监听80端口,这时就需要用到端口转发9 V( Q! U; N0 F; h# q+ V
* x. h! L" x0 ~
本文中,我们介绍Nginx如何做端口转发,还有各种转发规则
8 y$ n( F" _+ r1 G% ~
, M1 m  C6 ?' \将域名转发到本地端口
5 X  z1 f/ }9 l: v( r" l首先介绍最常用的,将域名转发到本地另一个端口上
2 q# F# J' Z6 v$ D
  1. server{
    - i0 \/ J+ P' o
  2.   listen 80;/ ?/ E! R% S. S/ [# N/ T
  3.   server_name  tomcat.cncml.com;- g+ J. X" i" e, s0 _# u+ w+ B
  4.   index  index.php index.html index.htm;
    7 n5 b8 o: T1 T) F% A; V) j
  5. ( F7 n/ j& K. h) w) s& j2 X0 j
  6.   location / {
    & j' G5 ?- ?3 W( Q
  7.     proxy_pass  http://127.0.0.1:8080; # 转发规则
    0 O; V9 m/ N" I' u; [7 v& j
  8.     proxy_set_header Host $proxy_host; # 修改转发请求头,让8080端口的应用可以受到真实的请求7 w: m' \% V3 D  D2 ]# j6 Y
  9.     proxy_set_header X-Real-IP $remote_addr;
    % W3 |$ z) _$ u
  10.     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;2 A2 ]9 s& _! `7 r4 z9 m
  11.   }, p/ ~: n7 P( u6 P
  12. }
复制代码
这样访问 http://tomcat.cncml.com 时就会转发到本地的 8080 端口! }) y) [: a. m4 ?: B/ W6 O! l
; B& [1 L: \0 n3 n
将域名转发到另一个域名
- w; @/ Y6 U" F( \
  1. server{
    3 |- T- p( v* r* [+ h
  2.   listen 80;9 o. w% q9 ^+ |# V# \
  3.   server_name  baidu.cncml.com;& D  M% s. a. N# p; I; z
  4.   index  index.php index.html index.htm;- F# Q6 @/ ^1 p6 H  P

  5. 2 o0 E6 @4 i: c
  6.   location / {. S. I4 n% ^1 c$ u  [' |
  7.     proxy_pass  http://www.baidu.com;
    ) u0 U0 f( q  `
  8.     proxy_set_header Host $proxy_host;+ n0 [) {8 Z' z- U' \( c
  9.     proxy_set_header X-Real-IP $remote_addr;' }' v; `% \' c; y
  10.     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;) @5 R! u+ }4 @! b* R: v
  11.   }
    + F# a: Q. e* K, W4 o$ g$ e
  12. }
复制代码
[size=0.6]这样访问 http://baidu.cncml.com 时就会转发到 http://www.baidu.com
本地一个端口转发到另一个端口或另一个域名% Q. ]& n5 Z" M9 i) L* _1 g. `
  1. server{
    9 |* E1 U- ~$ C7 U4 i
  2.   listen 80;! ^1 ?' y! ]' Z. U) R! z  p7 t
  3.   server_name 127.0.0.1; # 公网ip- Y; F7 ~# ]1 K! B: Z& B7 t& W
  4.   index  index.php index.html index.htm;
      ]9 K- Z# v' |9 r5 r, Q9 V7 o. U8 n

  5. % J9 S- q8 Y3 [2 ?+ e; i# p, D
  6.   location / {# ~) i/ v1 v7 E1 ]) C4 V, \" o
  7.     proxy_pass  http://127.0.0.1:8080; # 或 http://www.baidu.com" C+ X/ S! x4 X% z) |
  8.     proxy_set_header Host $proxy_host;
    ( [$ B8 j8 P4 {# b
  9.     proxy_set_header X-Real-IP $remote_addr;
    8 U9 v5 L! X% j$ E
  10.     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;* o0 f6 m# s8 W' F
  11.   }
    ( j9 I2 Y& N8 \. h0 h
  12. }
复制代码
这样访问 http://127.0.0.1 时就会转发到本地的 8080 端口或 http://www.baidu.com
( X1 z5 R" y) V$ z) @0 x! t8 B& G9 M$ F. H
加 / 与不加 /
0 k/ t1 J8 N5 y2 |  E/ |在配置proxy_pass代理转发时,如果后面的url加/,表示绝对根路径;如果没有/,表示相对路径
7 l- M9 m; N  y
. E/ A7 r, ?; m3 t! F* B例如
5 d) e" U! D. ^7 G, n! O4 r* E# D* d) I' G
加 /
5 j  u# x$ F  \5 r, f; A2 B+ U
  1. server_name cncml.com" X: [1 \: R2 w9 B7 d
  2. location /data/ {
    # T$ d7 e+ C3 V+ K
  3. proxy_pass http://127.0.0.1/;+ B) x; E& ]' ]. A- X
  4. }
复制代码
访问 http://cncml.com/data/index.html 会转发到 http://127.0.0.1/index.html$ D3 }5 a0 {7 ?3 v" e! z

) ?" B' H# W# l3 U" Z  Z/ Y  c( `: w不加 /
, z3 B* G1 ]' x1 }! k9 H5 s
  1. server_name cncml.com) s5 B* y: v% y5 F* P
  2. location /data/ {( W0 ~. F! C" s7 N
  3. proxy_pass http://127.0.0.1;
    % Y( s0 M# s0 b4 E: M- I; B- W
  4. }
复制代码
访问 http://cncml.com/data/index.html 会转发到 http://127.0.0.1/data/index.html( z1 k$ O. l+ s6 _

2 ?# c" S; {' F1 Q4 ]
游客,如果您要查看本帖隐藏内容请回复
  A% S. e0 G! ]5 O4 w( x
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2026-3-16 17:22 , Processed in 0.054341 second(s), 20 queries .

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