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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2020-2-25 05:46:09 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
有时我们会使用一些java或node应用,但又不想让他们直接监听80端口,这时就需要用到端口转发
- j2 y$ S! Z$ O# L! n  |7 ?) K' F, d0 e5 H  p; q
本文中,我们介绍Nginx如何做端口转发,还有各种转发规则
+ p7 S$ g. x4 Z7 [1 S  H- s# a
: E2 A( ]' ^+ ]9 b( P9 U3 l$ J将域名转发到本地端口( G: e3 ?) b) M
首先介绍最常用的,将域名转发到本地另一个端口上6 y) E" j, }* [5 i" a
  1. server{) l' n3 F) A0 ^% O& K: I
  2.   listen 80;9 O/ |# w; z) {4 n
  3.   server_name  tomcat.cncml.com;
    * s$ W* Y. b  M8 ?' c
  4.   index  index.php index.html index.htm;3 u8 ^  p- M! u' z  Z

  5. 6 U  y  N" ], Q. i
  6.   location / {1 _  J* L: R7 }7 k
  7.     proxy_pass  http://127.0.0.1:8080; # 转发规则) v* U6 [: R* D7 X2 b6 U
  8.     proxy_set_header Host $proxy_host; # 修改转发请求头,让8080端口的应用可以受到真实的请求( X4 ^9 L  y# ?
  9.     proxy_set_header X-Real-IP $remote_addr;
    5 L' n: e* A& J" r5 K. _' r
  10.     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    / h, @- |2 T/ R: g% W
  11.   }! c7 h9 ]) }2 R
  12. }
复制代码
这样访问 http://tomcat.cncml.com 时就会转发到本地的 8080 端口) O$ e# w! v7 e

9 f, N9 R% t7 F' [) G8 i将域名转发到另一个域名
" W# N! r; R6 R7 S4 E/ V; [# u: u
  1. server{
    5 I# y" T1 z. n" J) z: G
  2.   listen 80;7 y5 C7 A& {3 \- M
  3.   server_name  baidu.cncml.com;
    0 {' @$ \) ~, @0 ?* g7 `
  4.   index  index.php index.html index.htm;  p) q' k* S$ _* A" q/ a; c( ?; g6 _
  5. 2 i8 [* n5 ~4 _% _( Z% L
  6.   location / {
    9 u1 L: r5 L# O5 ]( v  c
  7.     proxy_pass  http://www.baidu.com;
    ' u' N- f# g. ?) H. Z
  8.     proxy_set_header Host $proxy_host;5 x2 E3 n) N7 P+ k$ Q
  9.     proxy_set_header X-Real-IP $remote_addr;
    6 n' W/ e' ]- R+ n0 F+ R+ R: h
  10.     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    4 s+ @0 J. p' }1 R0 k; k) W0 O
  11.   }
    % n% i& c, U6 c/ [6 N* y
  12. }
复制代码
[size=0.6]这样访问 http://baidu.cncml.com 时就会转发到 http://www.baidu.com
本地一个端口转发到另一个端口或另一个域名
0 i% G& Z6 g# Q
  1. server{0 r+ w- }5 Z( r/ n9 i$ u
  2.   listen 80;- x6 H- S# a! J4 p& C. s! ~, |
  3.   server_name 127.0.0.1; # 公网ip) b1 S/ x# A# j/ _
  4.   index  index.php index.html index.htm;
    ; j  z( P' _  i4 i

  5. ; L: I! q+ X5 @7 G$ C
  6.   location / {
    7 S% ]0 w; n; y. r7 [
  7.     proxy_pass  http://127.0.0.1:8080; # 或 http://www.baidu.com
    # Q8 N' z  O& F3 g  J
  8.     proxy_set_header Host $proxy_host;
    8 C: P3 ]. s' p0 ?2 V
  9.     proxy_set_header X-Real-IP $remote_addr;. K0 C  x+ v. q+ |
  10.     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    + D: i  X) J& y0 R( a
  11.   }7 }; i4 j, [8 W0 X3 P5 Q5 u+ N
  12. }
复制代码
这样访问 http://127.0.0.1 时就会转发到本地的 8080 端口或 http://www.baidu.com4 S. B" @* ~8 f5 V
7 T( N3 [' L* ~
加 / 与不加 /1 H; |7 B8 ^0 b, g
在配置proxy_pass代理转发时,如果后面的url加/,表示绝对根路径;如果没有/,表示相对路径6 |/ m+ L, J0 w# h$ \1 O& e; S4 A! ^% J! i
$ e9 K4 [! N' r
例如
1 w5 h; ]# Y/ l2 z7 S
! `6 a, V3 i4 b! B" k. E加 /- [4 C0 V6 O! c: }& ~
  1. server_name cncml.com
    ) G9 j  b1 U1 M/ [7 }& Q
  2. location /data/ {
    ; U$ F4 Z/ u# R: @3 o9 z
  3. proxy_pass http://127.0.0.1/;
    ' F1 `( |, j; Z+ ^( D' v1 ]$ G
  4. }
复制代码
访问 http://cncml.com/data/index.html 会转发到 http://127.0.0.1/index.html
' L. k8 M" K" d3 Q/ u9 t( Y) u- t: S" w9 W; H! H. Y
不加 /* g( Q: l# K# o0 I9 t, g! X
  1. server_name cncml.com
    ' ?8 y& N2 Q7 }5 M6 s) w& e. S! R
  2. location /data/ {
    1 R6 o/ H, \$ p$ I! B
  3. proxy_pass http://127.0.0.1;
    . A# a; S! Z' p# P  s
  4. }
复制代码
访问 http://cncml.com/data/index.html 会转发到 http://127.0.0.1/data/index.html% J1 D! V( X& K: Z8 m* W

! {! C* ?- l2 Z8 V- r2 ~
游客,如果您要查看本帖隐藏内容请回复
: f! c' E# w! o* B3 ^8 h
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2024-5-7 04:26 , Processed in 0.149847 second(s), 21 queries .

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