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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2020-2-25 05:46:09 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
有时我们会使用一些java或node应用,但又不想让他们直接监听80端口,这时就需要用到端口转发" H! d% \8 ^; Y8 m& ^! q7 G  a3 }7 |

2 `/ f$ _5 r3 n( y/ V* N7 T* k& R本文中,我们介绍Nginx如何做端口转发,还有各种转发规则: F# g( {0 a1 Z
5 N( z' M  A5 L6 i% T1 n
将域名转发到本地端口5 Q( s% {7 Q" q+ ?* Q
首先介绍最常用的,将域名转发到本地另一个端口上$ k, j! M2 v& s! H3 B
  1. server{
    + q* Z/ n) X, K8 Q
  2.   listen 80;9 q' T( P7 T2 F' W! Y2 D+ r
  3.   server_name  tomcat.cncml.com;9 Q1 i: H+ v& k1 {- G/ c
  4.   index  index.php index.html index.htm;: |! ^; }, G  K. T! y+ s9 o5 M

  5. ) L# K. C* U) s
  6.   location / {! k: K; p5 Z- t& F* ]
  7.     proxy_pass  http://127.0.0.1:8080; # 转发规则1 U' u& V0 d8 l3 R5 c; J- \
  8.     proxy_set_header Host $proxy_host; # 修改转发请求头,让8080端口的应用可以受到真实的请求1 R5 \0 a4 b* G' u) ?1 s2 G/ q
  9.     proxy_set_header X-Real-IP $remote_addr;# {2 ]! @* y- o: Q" [' G$ y4 \
  10.     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;- `$ K; {3 v$ U! P& b+ ?
  11.   }* A* z! H& E- M/ E- }& k
  12. }
复制代码
这样访问 http://tomcat.cncml.com 时就会转发到本地的 8080 端口7 h/ L9 F0 i: B/ X
! |$ p7 D4 W' X) B3 f
将域名转发到另一个域名
+ N& r  ?6 ?6 T" h+ ^
  1. server{( d6 E7 t" ]3 f( G
  2.   listen 80;
    8 L/ [/ j5 ?# \8 n5 B) W" o: s& ?
  3.   server_name  baidu.cncml.com;& ?7 ?8 |2 s0 x1 t6 v! ]% W- [
  4.   index  index.php index.html index.htm;
    3 P7 Z( K# i2 s

  5. # j; b. d2 h6 t  `$ L
  6.   location / {
    9 V1 i; l$ `; c
  7.     proxy_pass  http://www.baidu.com;* y* r' f; s; @) e! b
  8.     proxy_set_header Host $proxy_host;
    # o0 K0 a/ x( h, w* j
  9.     proxy_set_header X-Real-IP $remote_addr;
    * h9 t/ o  ^3 a- K4 ~8 K6 M9 z8 p( i
  10.     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    % T! X5 u: l1 |
  11.   }0 W# {4 G# [3 r/ j! l
  12. }
复制代码
[size=0.6]这样访问 http://baidu.cncml.com 时就会转发到 http://www.baidu.com
本地一个端口转发到另一个端口或另一个域名
* w* V5 j& |7 L, N4 A; v
  1. server{
    7 T' Z) u8 x! ?/ S
  2.   listen 80;
    1 H7 F. B3 U0 x4 @
  3.   server_name 127.0.0.1; # 公网ip+ J! W; b! ?2 t  t& s# J
  4.   index  index.php index.html index.htm;+ \3 {3 K; C# V  X7 g2 w6 S
  5. 5 g# w" F, v. I& ?% }4 M
  6.   location / {
    6 q0 O% a+ o$ |4 x9 v
  7.     proxy_pass  http://127.0.0.1:8080; # 或 http://www.baidu.com( w) k% m! H  \4 }( s9 `7 c
  8.     proxy_set_header Host $proxy_host;2 a' \. X3 ^7 f0 ~
  9.     proxy_set_header X-Real-IP $remote_addr;
    4 |% W7 P' @3 O2 ]1 a; e: I
  10.     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;/ D# @' g) C& i
  11.   }; N' t. B2 F% M5 ~5 q% q" d$ c6 ^
  12. }
复制代码
这样访问 http://127.0.0.1 时就会转发到本地的 8080 端口或 http://www.baidu.com
/ c1 e+ F" e( Z  L+ M6 o8 P4 B1 Q" t1 h) Z$ z
加 / 与不加 /
: _, j& r3 k2 S. K: `/ J在配置proxy_pass代理转发时,如果后面的url加/,表示绝对根路径;如果没有/,表示相对路径- m8 I( F7 D, v; O! j/ k  u
- Z: b& ~- i& c2 k. B% N! a
例如
: _$ y' ^. w5 q  Q3 o: r) {, T% k0 R/ a9 W$ R( j/ F
加 /6 ^0 G' Y7 {6 C  k, Y# G3 N
  1. server_name cncml.com4 R7 u5 W( }( T) Y1 v
  2. location /data/ {
    7 ?) o( E' v% p  M7 r
  3. proxy_pass http://127.0.0.1/;
    0 s3 ~. h* h/ C$ Z
  4. }
复制代码
访问 http://cncml.com/data/index.html 会转发到 http://127.0.0.1/index.html
2 Z: z0 Y- U  m2 x  {: R6 t( W1 v8 i
* `" a6 `& @! T# V1 X: M6 w不加 /* v2 g2 r5 R& E- _3 U2 b! X6 U0 x
  1. server_name cncml.com) l2 [* ?8 Q$ W1 T6 b
  2. location /data/ {5 i! s- r; K/ D. f3 i
  3. proxy_pass http://127.0.0.1;8 P" i: x* g. J8 t5 m
  4. }
复制代码
访问 http://cncml.com/data/index.html 会转发到 http://127.0.0.1/data/index.html
5 \! I) p* P# s8 N. Y
7 k6 N9 w0 k- |% M
游客,如果您要查看本帖隐藏内容请回复

8 t- I8 Z" B( K  g8 H: A
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2026-8-4 10:46 , Processed in 0.057343 second(s), 19 queries .

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