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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

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

" w% ~: M6 q: |1 V. B, D& m- T* e本文中,我们介绍Nginx如何做端口转发,还有各种转发规则! [8 k( z2 f( s6 t. P7 m/ e" G7 P
/ J: J- y( ]& j4 b" g8 C
将域名转发到本地端口
! B: H1 U+ k" b首先介绍最常用的,将域名转发到本地另一个端口上8 n" \9 P& r3 y  j# i* J
  1. server{
    3 F; }' j# X7 ~2 V8 l; Q- s
  2.   listen 80;1 E6 o' \5 ^/ d/ m
  3.   server_name  tomcat.cncml.com;( z" P, N+ D5 S
  4.   index  index.php index.html index.htm;
    6 e  _: S' `5 l( D9 r

  5. & f1 ]- d4 ?0 Z' }# v8 r% L: ]
  6.   location / {* @; y- h! P+ `7 a. k. f
  7.     proxy_pass  http://127.0.0.1:8080; # 转发规则# `5 U( V3 x& K2 a0 n  u1 G8 Q
  8.     proxy_set_header Host $proxy_host; # 修改转发请求头,让8080端口的应用可以受到真实的请求
    8 @% C! i8 a9 @0 T+ e
  9.     proxy_set_header X-Real-IP $remote_addr;
    - p7 Q$ I* o, e2 q  b( F9 u3 a/ v5 W
  10.     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    , Z, Y1 ]. c. x8 s* J$ }
  11.   }
    & q5 T/ s$ X& |: Q# ?+ e* C7 Y
  12. }
复制代码
这样访问 http://tomcat.cncml.com 时就会转发到本地的 8080 端口
4 x4 w9 f3 ?9 `5 a) q2 b* K! v) A/ K: L0 `3 _; W  J/ B# U9 h
将域名转发到另一个域名
- A" k* R7 ^" Z% P/ ?4 |7 m8 ~
  1. server{+ X2 k& C4 y- c+ P* V6 Z& r6 C
  2.   listen 80;2 |5 ?7 Z' C4 O
  3.   server_name  baidu.cncml.com;6 D3 ^  ~) g2 b6 r( R9 `9 a
  4.   index  index.php index.html index.htm;
    ) }2 v% K( \& W( d$ Z1 d8 h4 r, y! h" S7 s
  5. / a* h2 P& p) N7 U. P8 l
  6.   location / {
    . I2 l- T, ]2 U5 X* U' Z
  7.     proxy_pass  http://www.baidu.com;; n+ I7 P9 M4 {/ {& e8 x* ?6 X
  8.     proxy_set_header Host $proxy_host;
    ; ^5 T3 R  u7 D
  9.     proxy_set_header X-Real-IP $remote_addr;
    ) u2 d& N+ L* Y* X$ B+ j. q
  10.     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    / ?/ W$ h2 T. \6 ^" `
  11.   }6 E- S; d! K+ f$ ^" y
  12. }
复制代码
[size=0.6]这样访问 http://baidu.cncml.com 时就会转发到 http://www.baidu.com
本地一个端口转发到另一个端口或另一个域名! Q" Y9 W( M; U
  1. server{  D: h5 O# _) [7 f6 A) w5 r
  2.   listen 80;
    1 `8 N9 \0 g/ D% ^
  3.   server_name 127.0.0.1; # 公网ip
    2 R. C( w! R( |- M. ~
  4.   index  index.php index.html index.htm;. F8 ~: R' G# m" J9 a8 K6 Y

  5. , A+ x4 t- E: B% Z9 u6 h+ l! t
  6.   location / {
    : a) a6 s* t9 k* P- [4 B# ^
  7.     proxy_pass  http://127.0.0.1:8080; # 或 http://www.baidu.com- `* m6 _( [' J: a% U1 H0 x
  8.     proxy_set_header Host $proxy_host;
    6 k2 I4 u0 g/ @/ t* m% ~( u% k
  9.     proxy_set_header X-Real-IP $remote_addr;
    1 u1 ]% U4 u5 Q+ Y
  10.     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;( K" G' V* f' E7 c6 R+ D
  11.   }
    . _! D+ ^" ?# D
  12. }
复制代码
这样访问 http://127.0.0.1 时就会转发到本地的 8080 端口或 http://www.baidu.com
7 b" U& Q+ u/ _6 i4 z% z' \6 b% s. p3 {" b
加 / 与不加 /9 e( a- U2 y  h3 I3 t
在配置proxy_pass代理转发时,如果后面的url加/,表示绝对根路径;如果没有/,表示相对路径
) v) H( @! |/ w
8 P5 N5 L3 ]# S/ b例如
  }" ^8 y3 m2 E. f& b% w" p' D) ~( T# `+ W7 I: T! Q+ c
加 /
2 A5 V2 U% p0 F1 J7 T+ H
  1. server_name cncml.com: N* G$ S  r0 B5 Y8 j# E1 c
  2. location /data/ {
    7 m4 d. [3 {! K  |- e
  3. proxy_pass http://127.0.0.1/;, _2 I; [8 l# N0 p  u* \3 F
  4. }
复制代码
访问 http://cncml.com/data/index.html 会转发到 http://127.0.0.1/index.html7 e: @4 Z. |; }, }% e* m

* u$ K% u9 A& Q  U0 u, t不加 /
4 b4 k0 R: L) O- l5 |
  1. server_name cncml.com8 A* M& ~' t  h2 K1 V# n% ?% P
  2. location /data/ {- l9 Z# Q  J1 o
  3. proxy_pass http://127.0.0.1;5 N" @$ P, u& x# M* H
  4. }
复制代码
访问 http://cncml.com/data/index.html 会转发到 http://127.0.0.1/data/index.html- ~- R# A9 G4 c6 Q; `
; a3 f4 t. r8 X" X; s8 K9 z
游客,如果您要查看本帖隐藏内容请回复

  h/ H& @6 g( [: i
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2026-6-19 21:00 , Processed in 0.057606 second(s), 20 queries .

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