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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2020-2-25 05:46:09 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
有时我们会使用一些java或node应用,但又不想让他们直接监听80端口,这时就需要用到端口转发8 _, M) F& M/ X
7 ?2 f, t% o7 F( s3 }2 W2 o9 C
本文中,我们介绍Nginx如何做端口转发,还有各种转发规则( t* t' i: v6 _: k" c4 S, C
. ~6 e' e: P( m7 |( e6 f; n) c* q* s
将域名转发到本地端口
$ N0 o( D  M2 B& B首先介绍最常用的,将域名转发到本地另一个端口上
' [  u* t% i. _/ x4 ~
  1. server{
    % Y3 `- R" Z4 ^) w, z
  2.   listen 80;
    3 h: @: D; H, M8 q
  3.   server_name  tomcat.cncml.com;
    $ ~! `9 `+ ], `# F( {  U/ N  s
  4.   index  index.php index.html index.htm;
    " l/ |# D0 H# c4 {# B8 R  i; K( A# R

  5. + b" V0 ?8 x" b; h4 b4 O
  6.   location / {
    9 |+ [5 t0 g8 w1 u* h
  7.     proxy_pass  http://127.0.0.1:8080; # 转发规则1 A% s8 W, c- ^/ g2 q2 S0 s1 i1 o# d
  8.     proxy_set_header Host $proxy_host; # 修改转发请求头,让8080端口的应用可以受到真实的请求# C. N+ }! B. ~
  9.     proxy_set_header X-Real-IP $remote_addr;
    , E( ]3 V. J- K  b6 A; E
  10.     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    : Z( ~$ r+ R; U0 w4 ^# N
  11.   }) \4 |; `5 }9 S- Y8 X, m7 I* R
  12. }
复制代码
这样访问 http://tomcat.cncml.com 时就会转发到本地的 8080 端口
1 m5 ^# Z: M( C' u  [2 Z* h9 `; z8 F+ e
将域名转发到另一个域名
( ^/ f" g& O) U. |+ o) i0 ~, a
  1. server{3 y" p7 q0 x  @' q1 T9 E1 \* [$ n( K
  2.   listen 80;% }6 b# M! |2 r: ~4 Q: I- \
  3.   server_name  baidu.cncml.com;
    . |* D: m2 G8 }3 ]$ G
  4.   index  index.php index.html index.htm;
    ) [# [4 e- l' U3 {6 [! Y

  5. / j" [% g/ m2 K# r
  6.   location / {4 W# d3 O* K8 I7 L
  7.     proxy_pass  http://www.baidu.com;3 E1 A, K! ^7 j, ~7 l  S
  8.     proxy_set_header Host $proxy_host;
    / o6 W: t! D, r" d* ~7 Q/ e
  9.     proxy_set_header X-Real-IP $remote_addr;
    % `% s2 L+ P4 {) G8 T, P
  10.     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;3 V+ J7 M. S( _9 j- g
  11.   }. |2 b( W2 X+ ]+ b
  12. }
复制代码
[size=0.6]这样访问 http://baidu.cncml.com 时就会转发到 http://www.baidu.com
本地一个端口转发到另一个端口或另一个域名" m* m( g8 i6 M5 u; G- B4 e
  1. server{
    $ S0 I; }1 h: Z- e3 U' H
  2.   listen 80;; G6 t3 {& C* M6 O5 z. [3 S* p
  3.   server_name 127.0.0.1; # 公网ip& H/ F4 o, @5 H; p% M
  4.   index  index.php index.html index.htm;
    ; {2 h9 n# L8 I1 |6 A/ a# B5 H
  5. 5 s. ~' I) q/ W& h5 L5 w5 K
  6.   location / {
    0 F* S8 b" y+ Z/ \8 ^+ c4 t1 a# \
  7.     proxy_pass  http://127.0.0.1:8080; # 或 http://www.baidu.com% d5 L6 w2 Z; g& S
  8.     proxy_set_header Host $proxy_host;: L) I. k4 q) A( T
  9.     proxy_set_header X-Real-IP $remote_addr;
    4 Y# `, b8 K0 M1 r  P8 N, X$ T5 L
  10.     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;/ `  N( o) T# a/ d: z, K
  11.   }
    + E0 D/ S# @' e% S) u
  12. }
复制代码
这样访问 http://127.0.0.1 时就会转发到本地的 8080 端口或 http://www.baidu.com
3 m: ?! w# N/ o0 t7 r; P5 f$ ]" U& s% x  e! k
加 / 与不加 /# a  M( J+ r' |
在配置proxy_pass代理转发时,如果后面的url加/,表示绝对根路径;如果没有/,表示相对路径
( Y4 s7 }. B6 ~! O& M4 h
! a2 o( M1 O8 K% l$ C4 h例如: ]2 G  k8 a) X% I0 I
5 I3 W5 K' s# K; l0 y) _
加 /
) H9 D( H/ g4 v- V" Z) E8 t7 f
  1. server_name cncml.com3 w8 Y0 I! X" _" I
  2. location /data/ {; j4 z6 @0 y' p3 m7 A/ `5 X4 r
  3. proxy_pass http://127.0.0.1/;: W: [- c5 E# ^, E
  4. }
复制代码
访问 http://cncml.com/data/index.html 会转发到 http://127.0.0.1/index.html
. A2 s6 v; u5 i  ]- ?
/ l" ~$ }  h  G- V不加 /
8 O( p" J1 n" h- g/ j8 q" L8 W
  1. server_name cncml.com+ I$ ?0 A* F) k
  2. location /data/ {( b# ]" V# v6 [4 A; ]% N$ {) l
  3. proxy_pass http://127.0.0.1;
    3 T7 Q% J; v6 C- J/ H% r+ t& S
  4. }
复制代码
访问 http://cncml.com/data/index.html 会转发到 http://127.0.0.1/data/index.html: z. G, K$ C/ |6 F9 Q  ]
% x* n- e- A  d( a7 ~- I4 v; V7 n2 j* ~
游客,如果您要查看本帖隐藏内容请回复

, h  b& q, X; J# T/ i* P' S; P, I5 K
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2024-12-23 04:03 , Processed in 0.120797 second(s), 21 queries .

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