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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2020-2-25 05:46:09 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
有时我们会使用一些java或node应用,但又不想让他们直接监听80端口,这时就需要用到端口转发; r) D8 _& }! v& ~) n6 l- z

: k& ^& x0 I4 X( E9 f$ x3 c6 `+ V本文中,我们介绍Nginx如何做端口转发,还有各种转发规则
' K8 F) }5 t* G! \( a
9 l1 }# a& X7 l0 H6 F" a: e将域名转发到本地端口
4 }* }6 w. y4 `7 ^& y首先介绍最常用的,将域名转发到本地另一个端口上
6 ]" P; }  h; w) J' V6 L# S' \
  1. server{$ c$ Y8 ]3 d' g2 y. e
  2.   listen 80;, t4 G* X4 m- t) w+ o
  3.   server_name  tomcat.cncml.com;+ g$ k' N2 C9 m$ q+ h
  4.   index  index.php index.html index.htm;, P: J. z) M. l* l
  5. 4 v3 i" X& D, k8 `. z# I( i9 X0 b
  6.   location / {
    5 d  \$ z8 U0 ]# O5 L/ W
  7.     proxy_pass  http://127.0.0.1:8080; # 转发规则' j, D5 ]8 g; ^( ~4 I& K
  8.     proxy_set_header Host $proxy_host; # 修改转发请求头,让8080端口的应用可以受到真实的请求% Q* b3 Q' k! K6 _# O/ q1 t
  9.     proxy_set_header X-Real-IP $remote_addr;) J* p6 w2 N; Z' J7 r: ^0 ^2 Z9 u
  10.     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;, V3 {+ L0 @7 b% C0 T& L
  11.   }, ]! x& K+ l* {0 @$ z' D6 K, m
  12. }
复制代码
这样访问 http://tomcat.cncml.com 时就会转发到本地的 8080 端口' U2 n) E+ _; E; K+ w/ R! q
8 G0 a- x" e2 ?2 D# Y
将域名转发到另一个域名' }# a8 R# D' Z! _3 [+ K8 T7 h: ]5 ^
  1. server{
    , G# }. l" I3 v5 Q7 q2 \* s, n* k
  2.   listen 80;
    8 d. [) G/ h$ G. E( }9 ?% j
  3.   server_name  baidu.cncml.com;
    * x5 M9 f, b; _+ \0 @
  4.   index  index.php index.html index.htm;
    % P* q( e* `! G) \( `7 w
  5. 1 I9 B/ y8 x  R3 h" u* {" x
  6.   location / {
    + K: T. `3 Y/ Q  v
  7.     proxy_pass  http://www.baidu.com;# p; w6 j6 S) @, `3 ]6 c' U6 q! Q
  8.     proxy_set_header Host $proxy_host;4 e+ n5 k% w2 H  T8 I
  9.     proxy_set_header X-Real-IP $remote_addr;
    8 b7 i2 b; k+ V. e% X; s4 y% ~& P, w2 K
  10.     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;9 j. B3 e+ O4 S" X/ v
  11.   }7 ^* d* C9 v$ J
  12. }
复制代码
[size=0.6]这样访问 http://baidu.cncml.com 时就会转发到 http://www.baidu.com
本地一个端口转发到另一个端口或另一个域名3 }/ G& N" h, W2 M. N5 ?
  1. server{
    " u8 n$ P' {8 c" U9 t
  2.   listen 80;( Q/ G8 l4 [$ q
  3.   server_name 127.0.0.1; # 公网ip& e. E9 O1 }* ^. [* R
  4.   index  index.php index.html index.htm;
    6 h3 R; R. o% H
  5. 4 U* u3 G* m2 x
  6.   location / {, w: @* j# @0 K$ ~
  7.     proxy_pass  http://127.0.0.1:8080; # 或 http://www.baidu.com2 I8 W6 _3 R  |
  8.     proxy_set_header Host $proxy_host;0 t7 ^& m5 J, X
  9.     proxy_set_header X-Real-IP $remote_addr;2 `+ _# `5 [/ h6 d2 Z" a
  10.     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    0 }3 K5 _# [/ `8 G5 L7 k
  11.   }
    ; D$ \+ F" }3 n/ E, ~% z8 ?# _
  12. }
复制代码
这样访问 http://127.0.0.1 时就会转发到本地的 8080 端口或 http://www.baidu.com. T# B; k( c5 x& H( {& f; V

8 V& u' r8 ~# w* @1 h/ T加 / 与不加 /3 r4 `% z$ i3 r6 M2 h
在配置proxy_pass代理转发时,如果后面的url加/,表示绝对根路径;如果没有/,表示相对路径
0 R1 _$ D6 H: Z% l6 R7 D% W( N1 D; U
例如
8 k2 }) n9 f6 h! e: v, m
' r' I1 M  D" f' F" o8 T; _加 /
  M' o. l1 s) v. Z
  1. server_name cncml.com
    / u- `$ C6 g1 [
  2. location /data/ {
      K) F# {( _& ?" Q9 ~( w2 _+ x, \, y# |
  3. proxy_pass http://127.0.0.1/;- a# u/ ?7 X$ `0 H* j
  4. }
复制代码
访问 http://cncml.com/data/index.html 会转发到 http://127.0.0.1/index.html
; [; m, _1 h( y# y& o' g* x/ M4 d* h( u! J* ]! w, q! F
不加 /
1 m5 Z5 ]  U$ E2 r
  1. server_name cncml.com7 T4 L3 Y% q9 x; v: ^  X
  2. location /data/ {
    5 f9 ^8 g$ A5 l, n. i3 o9 K* f
  3. proxy_pass http://127.0.0.1;
    , u' ?5 r0 V' }+ s
  4. }
复制代码
访问 http://cncml.com/data/index.html 会转发到 http://127.0.0.1/data/index.html$ u$ t( }* N5 i4 ?9 z% l1 h
) B& B! y' L* b
游客,如果您要查看本帖隐藏内容请回复
" ^3 k1 n, J' c" S) q3 U
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2026-6-19 22:42 , Processed in 0.054138 second(s), 20 queries .

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