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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2020-2-25 05:46:09 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
有时我们会使用一些java或node应用,但又不想让他们直接监听80端口,这时就需要用到端口转发
! g3 L* _- H9 Q1 ?) ]( F% U' ?: S
. w$ m8 v3 ]1 |$ D本文中,我们介绍Nginx如何做端口转发,还有各种转发规则
8 b8 x7 }/ r: O$ Z( d+ ~
5 ]$ u0 x4 Z" E3 ?0 `7 l9 I6 I5 `将域名转发到本地端口# d+ m( \+ M6 j+ }, s( q) K
首先介绍最常用的,将域名转发到本地另一个端口上
8 s9 h/ l2 x8 g: Z: B
  1. server{
    3 n$ I$ w1 U0 u3 F
  2.   listen 80;1 R* ?" T/ Z$ Y1 L
  3.   server_name  tomcat.cncml.com;& n* J! y' t3 B% y
  4.   index  index.php index.html index.htm;
    : }' L8 X% @& I) b' h7 d  B1 J

  5. 0 z. j( L  f- @, {, r+ G- f$ y
  6.   location / {6 Z* H  {2 d3 {* t0 F3 d
  7.     proxy_pass  http://127.0.0.1:8080; # 转发规则
    - l" F5 f5 h! b/ w- X8 z" g
  8.     proxy_set_header Host $proxy_host; # 修改转发请求头,让8080端口的应用可以受到真实的请求( n5 b& ]+ {( |, G" o5 W
  9.     proxy_set_header X-Real-IP $remote_addr;
    + q. g# i( ^& b5 y9 H: [/ F
  10.     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;  N1 l8 ?8 F3 X* i
  11.   }9 ^5 x% F* u2 |) A  L
  12. }
复制代码
这样访问 http://tomcat.cncml.com 时就会转发到本地的 8080 端口' L4 f0 C4 E9 L9 v/ w! u( b
$ V* ]4 e: `; ^& `" K$ ~+ x! X
将域名转发到另一个域名
6 x  G. P3 v' e$ a) l
  1. server{
    3 @) V$ {! f+ T
  2.   listen 80;( f& b: M7 D- I7 q' z2 h
  3.   server_name  baidu.cncml.com;
    ) u* o& n  e* _- l+ m2 \
  4.   index  index.php index.html index.htm;( M! A7 \+ D# b" B- v

  5. 3 V4 a) h/ X3 W6 q, v' n; _* e. j
  6.   location / {
    2 ]! Y5 t' Y6 C9 D4 }5 v2 W! e) p
  7.     proxy_pass  http://www.baidu.com;
    $ U  O# e" v5 F& i3 ^* f
  8.     proxy_set_header Host $proxy_host;
    2 |. V2 R$ y5 `0 m( q- P/ M5 [7 ?
  9.     proxy_set_header X-Real-IP $remote_addr;
    : }9 A. T, {2 z1 R) N8 d& d
  10.     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    ' J$ s) q$ ?: G+ k; x
  11.   }- F" |- }3 V% U6 \2 }
  12. }
复制代码
[size=0.6]这样访问 http://baidu.cncml.com 时就会转发到 http://www.baidu.com
本地一个端口转发到另一个端口或另一个域名
+ r" }6 j) v7 g# T
  1. server{$ ^+ K8 c: P# l( T9 x5 G& M
  2.   listen 80;. {  y1 y/ I' I- c) W7 t
  3.   server_name 127.0.0.1; # 公网ip
    ) ]0 A; \4 z) T8 S5 x
  4.   index  index.php index.html index.htm;8 e9 I0 t0 ?; B2 Q
  5. 4 C# C7 z8 ]; w6 A2 {  ]( t
  6.   location / {( X  N  N9 Z- a, E* R
  7.     proxy_pass  http://127.0.0.1:8080; # 或 http://www.baidu.com
    7 }; F. I% @* v( w/ Y+ y
  8.     proxy_set_header Host $proxy_host;3 j. W; m) z2 W% H- B3 P
  9.     proxy_set_header X-Real-IP $remote_addr;
    / d. @$ s# h/ U( F
  10.     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    4 L* L- f/ v, i
  11.   }+ j$ U* n" L) c$ M2 }3 y* Y3 @
  12. }
复制代码
这样访问 http://127.0.0.1 时就会转发到本地的 8080 端口或 http://www.baidu.com+ y  y, i0 L+ e2 n

' P: y) ]4 H: w加 / 与不加 /! j  A5 _' `$ v4 o0 E- |. \
在配置proxy_pass代理转发时,如果后面的url加/,表示绝对根路径;如果没有/,表示相对路径7 \8 \5 S4 V% w9 c; S/ p2 G
3 u- t( v2 c# L2 Q- h% ^
例如
8 }% k8 W1 u( q$ ?5 B: y" T+ d
" {' G6 c5 A3 o- S5 l, K2 `加 /' w% g9 C. o8 f" k, }" N6 L/ A
  1. server_name cncml.com
    - O/ B; R: z% B& }" L3 {
  2. location /data/ {
    6 P1 h! O: a! o3 }( i
  3. proxy_pass http://127.0.0.1/;
    % K; {( E- U2 ~5 q
  4. }
复制代码
访问 http://cncml.com/data/index.html 会转发到 http://127.0.0.1/index.html9 C) @6 n, w% l' _  _

- @' c( p: w+ N" u6 t# k不加 /
0 k  O2 [9 d; R) y; x, z
  1. server_name cncml.com( d* n5 t- A# [
  2. location /data/ {
    - C' B- N  s. E
  3. proxy_pass http://127.0.0.1;
      t( i0 j5 W+ O2 J4 |
  4. }
复制代码
访问 http://cncml.com/data/index.html 会转发到 http://127.0.0.1/data/index.html$ a7 n1 C. n* E  c& z( q. K; U

, N( \" Z) K- R3 U& |1 u8 p2 b' d  F+ `- }
游客,如果您要查看本帖隐藏内容请回复

4 d" ?& q7 e  j, o" p
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2026-6-19 23:58 , Processed in 0.055260 second(s), 20 queries .

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