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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2020-2-25 05:46:09 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
有时我们会使用一些java或node应用,但又不想让他们直接监听80端口,这时就需要用到端口转发
" j5 R' `5 H; Q" j! L$ B( A
; S1 Z; N0 U# F( K/ g- M- S" d本文中,我们介绍Nginx如何做端口转发,还有各种转发规则
. L0 j( |# B) Z* M0 e* d
% J' F8 M% t5 z9 m将域名转发到本地端口" y1 n. E9 {( P* G
首先介绍最常用的,将域名转发到本地另一个端口上( D! y/ v! g, _/ o
  1. server{
    0 Q4 h0 J, K6 B
  2.   listen 80;
    - u' i7 Z& O2 I0 b- w7 P/ Z. A
  3.   server_name  tomcat.cncml.com;
    0 R) D- q1 i9 x& m* O: E: W
  4.   index  index.php index.html index.htm;: q7 W2 Y3 @' S) v5 _* D/ f  i

  5. ' k6 |" [/ q* _3 t3 \( [
  6.   location / {
    ! q' W! T" Q: c* J' {2 ^# Y9 g
  7.     proxy_pass  http://127.0.0.1:8080; # 转发规则
    ; Y( V) C2 g$ A  x3 K$ e# q6 g
  8.     proxy_set_header Host $proxy_host; # 修改转发请求头,让8080端口的应用可以受到真实的请求: ~6 I. c$ g& u0 B. y
  9.     proxy_set_header X-Real-IP $remote_addr;% Z! i8 m, i' E( N3 [
  10.     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    7 l5 Q( I1 X  [* y
  11.   }
    $ i1 X1 E2 f9 r( R! X( q3 W3 W! b
  12. }
复制代码
这样访问 http://tomcat.cncml.com 时就会转发到本地的 8080 端口
9 O% H1 j: t" S: R' n
2 i/ L% v6 B, ~* f将域名转发到另一个域名! n: S0 G$ [  K3 d7 m1 {
  1. server{
    5 d& _# J+ D5 j# H. h7 H" k
  2.   listen 80;* C' t) E" ^; X# v
  3.   server_name  baidu.cncml.com;0 L7 Q, F1 a6 y
  4.   index  index.php index.html index.htm;* F0 @# |. E; T

  5. * _- ?# h/ W9 w0 w% j* Q7 C% C
  6.   location / {& }# g, e! i: l5 D/ }' g
  7.     proxy_pass  http://www.baidu.com;
    % c! d8 z7 Q/ C# z+ v6 v3 ]' U
  8.     proxy_set_header Host $proxy_host;& R6 ^- J& M3 U. b$ j( D
  9.     proxy_set_header X-Real-IP $remote_addr;0 t' Z; R# L5 i  A. N
  10.     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    4 q# w" G5 o4 }9 V! a5 Y$ Y
  11.   }5 I: F0 ]% R" s+ n5 h0 l! U
  12. }
复制代码
[size=0.6]这样访问 http://baidu.cncml.com 时就会转发到 http://www.baidu.com
本地一个端口转发到另一个端口或另一个域名
7 w4 N! N2 w5 G' `% h  U  S" Q
  1. server{# d# t5 s% \: y3 O7 H" u3 @
  2.   listen 80;
    + s; f8 n! M5 i
  3.   server_name 127.0.0.1; # 公网ip
    * `; C: w, l+ L" \5 k
  4.   index  index.php index.html index.htm;
    # ~4 m; d3 B' a! {

  5. 5 ]' w4 e4 O$ y# x# X/ ~
  6.   location / {
    1 q% b) h1 F" W. H" |3 ^* o* N
  7.     proxy_pass  http://127.0.0.1:8080; # 或 http://www.baidu.com
    & i0 B0 s( {0 d
  8.     proxy_set_header Host $proxy_host;
    " g4 N- a9 [1 S. y' M8 C3 ?
  9.     proxy_set_header X-Real-IP $remote_addr;
    4 m$ T3 d5 c* U+ P" Z
  10.     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    ( h/ f- f  H: d
  11.   }
    0 j1 ]  L; ?7 X8 K. M
  12. }
复制代码
这样访问 http://127.0.0.1 时就会转发到本地的 8080 端口或 http://www.baidu.com
. B! _2 b! m+ H+ x( n9 |) Q0 Y$ Y2 w) e/ B' K. _  U4 I
加 / 与不加 /& p- }, _" X# y: @  H, `
在配置proxy_pass代理转发时,如果后面的url加/,表示绝对根路径;如果没有/,表示相对路径
$ C4 O$ j/ o3 {2 M5 s6 ~* }" d) M7 t) R, G
例如
7 G3 j& A8 V) E) U1 u) k5 Y0 f2 B0 h4 J0 A" t2 a# c
加 /! g( c; c* a% i& E! ^5 x
  1. server_name cncml.com. n; j% a3 X' M$ V* N7 k, m" g
  2. location /data/ {
    : m' C* ?& L- h4 k
  3. proxy_pass http://127.0.0.1/;5 v' J$ ?. [3 ?: f
  4. }
复制代码
访问 http://cncml.com/data/index.html 会转发到 http://127.0.0.1/index.html3 A, M! ?8 ^+ c+ D. Y0 U

: r) C  {3 o. v4 \8 p4 t& n不加 /
/ j, `0 w- [" [& ]5 E
  1. server_name cncml.com5 s- a7 W( P3 ^" p8 [# n) ]! y/ [
  2. location /data/ {  Q/ w8 n+ Z7 _% o
  3. proxy_pass http://127.0.0.1;
    $ b! ^) g- @5 U9 Y: h
  4. }
复制代码
访问 http://cncml.com/data/index.html 会转发到 http://127.0.0.1/data/index.html; b0 c, y8 [5 w, d
5 q; y: W0 @2 C
游客,如果您要查看本帖隐藏内容请回复
: H7 L$ d& H! K
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2026-1-30 16:37 , Processed in 0.052853 second(s), 20 queries .

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