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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2020-2-25 05:46:09 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
有时我们会使用一些java或node应用,但又不想让他们直接监听80端口,这时就需要用到端口转发
  u: ~9 b: J' q$ S: A0 C9 t7 y; P7 {
4 j  Z2 p# W1 B本文中,我们介绍Nginx如何做端口转发,还有各种转发规则
4 V. Q' o7 R, Q* C- T9 m2 X* R! Z- c0 G% C/ z  P" \: J* @
将域名转发到本地端口( A) P" _8 }0 ~1 s  b# B9 g
首先介绍最常用的,将域名转发到本地另一个端口上
; A7 N0 p, l* O2 p% M# h1 ]6 G
  1. server{1 M- Z$ Y  ~. V. k$ m( S, P: @
  2.   listen 80;
    2 O1 r% b& g6 B! s
  3.   server_name  tomcat.cncml.com;
    0 Q/ k4 X' P( l! w! X
  4.   index  index.php index.html index.htm;
    : A1 u' f0 I, [% Y: v
  5. ' O9 o/ z+ Q8 `' Z. k( f9 o8 r
  6.   location / {
    : f# j) B  J2 F+ X& G
  7.     proxy_pass  http://127.0.0.1:8080; # 转发规则
    + k# K  R$ j" _, k6 I
  8.     proxy_set_header Host $proxy_host; # 修改转发请求头,让8080端口的应用可以受到真实的请求; ^3 q/ B! a9 d  F  x5 Y
  9.     proxy_set_header X-Real-IP $remote_addr;
    + r0 b# r1 B  w  Y; u
  10.     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    / n& v, e3 t' h
  11.   }
    8 Z& K# k5 D' A9 r& `! C  [# p# }- K, {+ O
  12. }
复制代码
这样访问 http://tomcat.cncml.com 时就会转发到本地的 8080 端口% a/ U5 v$ `- M
) J, O  b! \& z
将域名转发到另一个域名2 D5 C! \- d: A7 t- A# a
  1. server{# R8 A: g4 G& A! Y
  2.   listen 80;4 _# Z, b, M. P- o
  3.   server_name  baidu.cncml.com;
    , i3 _% R3 _/ n
  4.   index  index.php index.html index.htm;
    ) f' T2 }( X, E7 e

  5. . E$ k, x, P+ |% k* t
  6.   location / {8 q0 ]3 f  Q; N$ {9 |$ \
  7.     proxy_pass  http://www.baidu.com;7 z$ `9 y+ a; w4 @
  8.     proxy_set_header Host $proxy_host;
    ! J1 k( V; C2 d* V$ m" M
  9.     proxy_set_header X-Real-IP $remote_addr;& F9 n9 w  {* W' t4 `! _5 {
  10.     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;" a0 \. r2 |. I# d1 n! x( ?8 q
  11.   }5 @/ s  j0 O$ i3 f8 ^5 c
  12. }
复制代码
[size=0.6]这样访问 http://baidu.cncml.com 时就会转发到 http://www.baidu.com
本地一个端口转发到另一个端口或另一个域名5 F' v8 |# l' |/ A5 K7 r- S0 `; i
  1. server{2 [7 P+ {4 _# [: E: _
  2.   listen 80;3 E: f' W$ K% I) p) l+ R5 F
  3.   server_name 127.0.0.1; # 公网ip/ A# H; i$ C7 s( k
  4.   index  index.php index.html index.htm;& h! g2 }' @) j1 T' O% o+ Z2 ?
  5. ) h( i0 |2 R' h; V+ X+ u& C
  6.   location / {
    / w1 G/ M0 U/ Z7 n% C
  7.     proxy_pass  http://127.0.0.1:8080; # 或 http://www.baidu.com  \% I' Q$ }) E! T8 D4 s" z
  8.     proxy_set_header Host $proxy_host;+ t6 c3 f9 W& O% e5 S/ c
  9.     proxy_set_header X-Real-IP $remote_addr;
    - T- N7 m% x2 l0 M
  10.     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;9 [' y4 z9 J7 l6 ^
  11.   }+ p0 F- X; n' J3 B, j) y3 ]8 U$ V
  12. }
复制代码
这样访问 http://127.0.0.1 时就会转发到本地的 8080 端口或 http://www.baidu.com
' k$ h+ o( z8 G/ E$ @4 a# ]1 @  A9 H' U" h6 r% m
加 / 与不加 /* E+ e) m  x' s8 P& f6 S
在配置proxy_pass代理转发时,如果后面的url加/,表示绝对根路径;如果没有/,表示相对路径
: P5 Y; f- }9 p8 E7 O% s, S
* ?% D' K6 I  c3 ]- ?例如* Z4 f* P/ k! ?
" D, n8 s, Q8 c8 A/ G4 K# N6 ^
加 /
* Z( V+ M9 P: T5 F+ ^* }: A: _- X! L2 }
  1. server_name cncml.com
    " P- `$ i4 i" d7 _- ~8 F
  2. location /data/ {: E# k, [: e9 p
  3. proxy_pass http://127.0.0.1/;; @' C6 n! }* \8 T0 s
  4. }
复制代码
访问 http://cncml.com/data/index.html 会转发到 http://127.0.0.1/index.html* S' W" C4 w; S1 j% j4 _" O! s
3 E' I; \' q4 X
不加 /9 v8 K$ J1 |! ?& k0 h8 f& N
  1. server_name cncml.com
    6 q& v# d  |- {& M/ ~& t6 k1 x
  2. location /data/ {
    5 q. P4 g& A! D' G$ I- e5 N& e
  3. proxy_pass http://127.0.0.1;* i! m/ k+ S+ D& _5 f3 m7 S
  4. }
复制代码
访问 http://cncml.com/data/index.html 会转发到 http://127.0.0.1/data/index.html) s, o$ w' ]$ i& c) i6 D7 w

7 z- @: L; B4 m3 X1 O% b4 E' b
游客,如果您要查看本帖隐藏内容请回复

6 B# O% V% k* ~/ t3 @* N5 @' T
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2026-8-4 08:11 , Processed in 0.055731 second(s), 19 queries .

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