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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

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

; G6 l; F# O/ b0 C+ w本文中,我们介绍Nginx如何做端口转发,还有各种转发规则
- m% H% V  d5 `# A& O' j
+ r# D; A. [4 ]将域名转发到本地端口! Z2 L: w( q# J5 D* s
首先介绍最常用的,将域名转发到本地另一个端口上
7 H7 V+ F, q! s& y- i4 _
  1. server{
    : w6 y7 {0 y. V8 D! s( o
  2.   listen 80;
    $ }! E7 Q; i+ m/ i' e8 J' m
  3.   server_name  tomcat.cncml.com;$ V. w9 r& ^/ t, F
  4.   index  index.php index.html index.htm;6 ]1 M' f" W9 ]

  5. 6 N( \" ^7 `* V% ?
  6.   location / {
    2 m. w( O5 Q. I& L2 ^3 m% E) d# M
  7.     proxy_pass  http://127.0.0.1:8080; # 转发规则. n7 h2 B, v9 o! n
  8.     proxy_set_header Host $proxy_host; # 修改转发请求头,让8080端口的应用可以受到真实的请求
    / Z/ V/ t4 U. r
  9.     proxy_set_header X-Real-IP $remote_addr;& ^! T0 d9 j' o: h" d
  10.     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;8 K6 {2 @/ }  U2 y% M  s$ K
  11.   }. _9 j6 K( m6 a3 S
  12. }
复制代码
这样访问 http://tomcat.cncml.com 时就会转发到本地的 8080 端口
$ U3 e9 \) u& M- j- ]2 m# B
& |" v7 e  W3 A/ T将域名转发到另一个域名$ y/ U7 }. c9 G" C+ B( O4 A3 p
  1. server{4 i$ y* V5 i# s! `. S
  2.   listen 80;
    9 Y2 ^' |4 ^4 M3 S4 A# U
  3.   server_name  baidu.cncml.com;2 G# q- f6 {1 F- W
  4.   index  index.php index.html index.htm;6 }$ y2 V# w( _3 c. t- |1 X2 N
  5. 6 {4 r* @  _, S0 `8 b
  6.   location / {
    # Y/ L* [7 W+ a
  7.     proxy_pass  http://www.baidu.com;2 W- G( J: ?4 G+ b# X
  8.     proxy_set_header Host $proxy_host;7 f1 |" L  s2 G/ T  F1 k* U
  9.     proxy_set_header X-Real-IP $remote_addr;
    0 i' @% ^, a2 E* i) C
  10.     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;" b6 X$ f6 n( m6 s
  11.   }
    , d; t* ^* E) k% ]
  12. }
复制代码
[size=0.6]这样访问 http://baidu.cncml.com 时就会转发到 http://www.baidu.com
本地一个端口转发到另一个端口或另一个域名
% J2 c: I$ y% w5 q
  1. server{2 I; B  m7 W+ Y% R3 O, p
  2.   listen 80;, O( o4 }3 c+ {' W3 U3 a$ j
  3.   server_name 127.0.0.1; # 公网ip( I6 z$ Q, U: H9 _1 f5 ~
  4.   index  index.php index.html index.htm;
    * C; I7 ]7 |. k' S) O7 w

  5. ; c9 s+ p( R/ p) C3 |
  6.   location / {
    * y1 c# h* W0 s# g# m1 k# W" Y
  7.     proxy_pass  http://127.0.0.1:8080; # 或 http://www.baidu.com" ^; q# [- _1 w& J4 Y2 ~
  8.     proxy_set_header Host $proxy_host;' ]) m! H; |) r6 {
  9.     proxy_set_header X-Real-IP $remote_addr;
    9 ]: ~, g. u2 Y" v: `, G
  10.     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;& C" p2 ^( a. m, Z3 K0 d% e1 D; E
  11.   }
    2 K; P9 U% ]7 u6 M7 {
  12. }
复制代码
这样访问 http://127.0.0.1 时就会转发到本地的 8080 端口或 http://www.baidu.com
, w2 K2 r# c2 ~! n, `3 e$ T
/ l' o8 f9 O4 ?- c6 D- z加 / 与不加 /
6 Z3 w% G* [' j- D; ~  k在配置proxy_pass代理转发时,如果后面的url加/,表示绝对根路径;如果没有/,表示相对路径/ R9 C7 o% C5 N
9 x: o7 O6 q  u& r8 r# m6 k
例如
" w  f7 f$ T0 \# `. j3 X$ P) y* f  c" W2 k, r, B9 E
加 /; L# a4 ^% v: ~( f) N' n
  1. server_name cncml.com
    # |  x9 J5 o7 I
  2. location /data/ {! Y$ H/ C) i! A# j, R' [4 A
  3. proxy_pass http://127.0.0.1/;
    , t( B# z& P* s; }7 x& X6 h: n8 Z( g
  4. }
复制代码
访问 http://cncml.com/data/index.html 会转发到 http://127.0.0.1/index.html6 [- I, \' \0 r

. P" y8 K& g: N2 x! l' m$ i' O0 B不加 /9 _( V" L8 }/ S' q% U9 m4 Y
  1. server_name cncml.com4 R+ M  B( B9 y, s) E, H, D" i7 w- ]! W
  2. location /data/ {- o. E. M0 Y" q- g/ Y5 j
  3. proxy_pass http://127.0.0.1;
    ; X* @9 a+ {& p9 `' |4 A
  4. }
复制代码
访问 http://cncml.com/data/index.html 会转发到 http://127.0.0.1/data/index.html/ a! e5 _/ Y, S/ B. K

, V4 p( x0 F4 W1 J& S
游客,如果您要查看本帖隐藏内容请回复

. `6 l  g) u8 T! n8 T
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2026-6-19 23:51 , Processed in 0.068322 second(s), 19 queries .

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