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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2020-2-25 05:46:09 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
有时我们会使用一些java或node应用,但又不想让他们直接监听80端口,这时就需要用到端口转发
+ v  k4 {2 m" _
' u( d' j; H# R+ d& Z0 v本文中,我们介绍Nginx如何做端口转发,还有各种转发规则
' t3 J: W3 x5 V9 G0 Q
6 @9 G3 Q* b; p9 B+ M1 h3 a将域名转发到本地端口; X) ]/ f3 A$ i8 E+ [9 y
首先介绍最常用的,将域名转发到本地另一个端口上
; D1 `" |$ s/ d/ W# W
  1. server{! R7 x( x2 Z0 ]( {
  2.   listen 80;- O( Z2 x9 k- s' R0 J& \; T
  3.   server_name  tomcat.cncml.com;3 s5 y, ^! n: I: X% O; Q# p
  4.   index  index.php index.html index.htm;
    # W5 {; a: u3 L
  5. 2 D; s3 k5 O! L. G7 @5 G# R# V; ]
  6.   location / {* H2 h: s4 W% j* j" M3 A# ~
  7.     proxy_pass  http://127.0.0.1:8080; # 转发规则
    . s8 K7 j+ I" `, `0 e2 ~( v
  8.     proxy_set_header Host $proxy_host; # 修改转发请求头,让8080端口的应用可以受到真实的请求0 a7 D' E: ?, A- W  I
  9.     proxy_set_header X-Real-IP $remote_addr;
    ; F0 J3 l2 i) q: d
  10.     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;* F! U1 l$ b3 w$ s* P
  11.   }
    , A8 q5 ?8 E( q* O; S4 H& t1 ~1 a# b
  12. }
复制代码
这样访问 http://tomcat.cncml.com 时就会转发到本地的 8080 端口
/ J. V1 ?$ K$ }2 _, ~* r; A, b) l, e
将域名转发到另一个域名1 C) G' `" [- V( @% a: i$ t
  1. server{
    2 {% N- Q: E+ i- _4 ]7 d5 T# d9 `7 {" ~
  2.   listen 80;
    : y; [! u2 K$ n+ x
  3.   server_name  baidu.cncml.com;) {! B# {$ w1 `# [! z
  4.   index  index.php index.html index.htm;
    ( \1 `2 H% l" j  W# F

  5. $ x0 E% M5 e  r+ e* R1 P" T, y# O
  6.   location / {5 u. H" \& v& p
  7.     proxy_pass  http://www.baidu.com;9 j& W. _# ?- s2 o4 w: V4 `
  8.     proxy_set_header Host $proxy_host;
    5 W9 P9 f% C* h( E
  9.     proxy_set_header X-Real-IP $remote_addr;2 C9 E0 N5 j8 y) X' \% q) z
  10.     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    - F0 }$ Q1 ?, h# B  L2 V1 K
  11.   }
    9 H, c; ]1 k! B$ h
  12. }
复制代码
[size=0.6]这样访问 http://baidu.cncml.com 时就会转发到 http://www.baidu.com
本地一个端口转发到另一个端口或另一个域名
# A, W% b1 `1 W: V% ~0 u1 w
  1. server{1 R1 e0 c- k/ Y* t& u* ]) C( Q
  2.   listen 80;; {' a/ Y6 F+ I1 T6 R
  3.   server_name 127.0.0.1; # 公网ip
    4 h, L% Y2 x: k' t5 |1 \
  4.   index  index.php index.html index.htm;
    + F/ _) l6 X" h) U7 I
  5. ; l. h6 {/ W* d3 {# X
  6.   location / {
    & u8 a5 H) L% d# G
  7.     proxy_pass  http://127.0.0.1:8080; # 或 http://www.baidu.com* n( c+ I0 x  z
  8.     proxy_set_header Host $proxy_host;* i. |6 a1 B! ~
  9.     proxy_set_header X-Real-IP $remote_addr;
    4 u, w7 u) l! \( [# a
  10.     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
      {  V9 y! S, [0 d7 Y* R1 b; E
  11.   }
    3 R* L& q! a; N" m' _4 Q
  12. }
复制代码
这样访问 http://127.0.0.1 时就会转发到本地的 8080 端口或 http://www.baidu.com  i2 D& G, r9 a) G0 d! T

  K$ n, W1 C. p加 / 与不加 /+ `( N% o8 Z3 J# l' e8 p$ O
在配置proxy_pass代理转发时,如果后面的url加/,表示绝对根路径;如果没有/,表示相对路径
) {; O6 ^" I; f$ S
, X8 q- Z8 t$ @) {5 S3 ]例如
# e5 E5 b- h& E0 m# c! a3 ?. Z$ x( v  `/ h- L8 L: t2 c
加 /5 w0 \: j2 ?' m( h# N
  1. server_name cncml.com
    , D6 F, p& ]5 T
  2. location /data/ {
    + ?& Z" D, i# c
  3. proxy_pass http://127.0.0.1/;
    8 z5 w6 R4 i- l7 F. N
  4. }
复制代码
访问 http://cncml.com/data/index.html 会转发到 http://127.0.0.1/index.html; p4 i& ^3 ]% D  z. i6 H0 X

7 Q% R6 p! Q8 @2 g( r不加 /: {5 c8 p3 h# V: ~; S4 K" H2 O
  1. server_name cncml.com2 p, P& s' Q9 ]  Z5 \! O# u
  2. location /data/ {. |$ Z3 f" J9 P
  3. proxy_pass http://127.0.0.1;, P% A# ^9 s* @9 s( c# j
  4. }
复制代码
访问 http://cncml.com/data/index.html 会转发到 http://127.0.0.1/data/index.html& \4 d) p! A! ], S

% ?+ R. `* d! @' C
游客,如果您要查看本帖隐藏内容请回复

0 c* ^/ E7 Y0 N# d' m) z+ z2 {
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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