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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2020-2-25 05:46:09 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
有时我们会使用一些java或node应用,但又不想让他们直接监听80端口,这时就需要用到端口转发
% v4 ?- L% D5 u$ t+ `1 K# {- n5 s8 i  [0 L' q% e8 u$ m$ W. u6 P0 H
本文中,我们介绍Nginx如何做端口转发,还有各种转发规则+ c7 ]5 Y0 Y6 Z9 s0 `1 [
9 Z4 _, u2 i1 X6 B) g: _
将域名转发到本地端口
6 k; ^4 R* O1 W& t4 ^0 C# v- r7 e/ M首先介绍最常用的,将域名转发到本地另一个端口上
) r; b. T4 Z) ~
  1. server{- K; s% k- z4 p% w0 R/ V" a
  2.   listen 80;
      V. K- f8 ^! x7 M% Z7 H3 q- n8 \- j3 Y
  3.   server_name  tomcat.cncml.com;- V: P7 M3 P1 h
  4.   index  index.php index.html index.htm;* Z* d" A# D0 t+ C3 B
  5. 4 s/ m1 ^7 A) d2 S( r+ Y
  6.   location / {
    ! I2 A6 V( z8 N, i1 }  k# g# V8 p
  7.     proxy_pass  http://127.0.0.1:8080; # 转发规则8 s3 @0 J& n  G3 ]
  8.     proxy_set_header Host $proxy_host; # 修改转发请求头,让8080端口的应用可以受到真实的请求4 `3 N! |- k8 z9 {' [2 V
  9.     proxy_set_header X-Real-IP $remote_addr;/ m: e6 I% y$ A$ j
  10.     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;! Y. W. n& P% D! z
  11.   }0 j2 l4 ?# `5 J& K0 x7 n
  12. }
复制代码
这样访问 http://tomcat.cncml.com 时就会转发到本地的 8080 端口
' j4 Q' `4 D1 [- L+ o; f. V& G# q* H, f! b' K2 x
将域名转发到另一个域名: b0 X$ a3 W1 i1 C' \# \
  1. server{
    " E# z% }& i! s) e3 ^
  2.   listen 80;$ c$ i2 I  g8 I3 v/ ?% _! p
  3.   server_name  baidu.cncml.com;
    ) E  x, E" N3 N' x
  4.   index  index.php index.html index.htm;6 Y6 P# Q! S  r

  5. $ T1 F. Z" u' i( Y5 k* H# u% G
  6.   location / {4 _$ F% y4 g& Q0 w2 J+ `$ p! \
  7.     proxy_pass  http://www.baidu.com;
    3 v3 ~2 @9 c4 x
  8.     proxy_set_header Host $proxy_host;
    6 u6 K3 J* C0 j: v. I( E& q
  9.     proxy_set_header X-Real-IP $remote_addr;$ r/ z/ W8 {! a5 A5 E9 t4 k& q! u! G
  10.     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;) N8 y. Z0 L# k) c5 O. s
  11.   }  l$ z4 W3 C* L. u
  12. }
复制代码
[size=0.6]这样访问 http://baidu.cncml.com 时就会转发到 http://www.baidu.com
本地一个端口转发到另一个端口或另一个域名* {, K  \0 P$ x3 t
  1. server{
    4 G9 f+ p: w* R
  2.   listen 80;- `; q: Y' @2 ]
  3.   server_name 127.0.0.1; # 公网ip
    4 h# Z  R) W2 h/ U
  4.   index  index.php index.html index.htm;
    ; D+ d6 t- C9 H1 q
  5. 5 {/ P8 ]/ a% `7 W1 x
  6.   location / {- Z8 [& w. `) E( ?' k
  7.     proxy_pass  http://127.0.0.1:8080; # 或 http://www.baidu.com
    1 G0 W+ m6 `  }5 x0 _
  8.     proxy_set_header Host $proxy_host;1 ?% Y# _( a4 A1 |
  9.     proxy_set_header X-Real-IP $remote_addr;
    $ _8 V+ l# |4 S" d+ |' m
  10.     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;/ a4 V3 C# a! Z% y5 p
  11.   }
      M- s8 R7 k) H" X! I$ ^
  12. }
复制代码
这样访问 http://127.0.0.1 时就会转发到本地的 8080 端口或 http://www.baidu.com
5 J3 I3 d/ _& z6 S2 L" c0 g# o# c2 A. D3 i
加 / 与不加 /5 t3 l+ f- s/ f  J4 K" E
在配置proxy_pass代理转发时,如果后面的url加/,表示绝对根路径;如果没有/,表示相对路径# H1 b  X5 W. k3 ]' W
) [1 `) }0 ]0 [. N7 J
例如
- q4 \/ e& z+ X) g1 Z& S* C8 B7 p& w* ~" x
加 /
" V" l9 [2 d% Z4 r$ q( C5 h" a2 w' h
  1. server_name cncml.com
    : X  P3 w. G& u1 e& N+ L
  2. location /data/ {
    7 c  ^. r# F; d, q  ^2 C
  3. proxy_pass http://127.0.0.1/;8 ~! ]/ x: b1 m# P
  4. }
复制代码
访问 http://cncml.com/data/index.html 会转发到 http://127.0.0.1/index.html
* X8 e! C5 u9 B: |8 A2 ]. J
1 }+ A& J7 X# [! q不加 /- `) i9 o' q0 k5 C% Q% F' x9 Z1 m9 a
  1. server_name cncml.com) z. L- W4 F" C9 a; C8 G
  2. location /data/ {
    ! n$ Z. E* _$ R  d
  3. proxy_pass http://127.0.0.1;9 p3 R- N5 J5 \# A- l( F
  4. }
复制代码
访问 http://cncml.com/data/index.html 会转发到 http://127.0.0.1/data/index.html5 t, p" z. t' e; u$ h
& {0 O  N0 Y3 j0 b4 t5 a* g) Q" D
游客,如果您要查看本帖隐藏内容请回复

6 U, Z1 g/ C( Q# f  g
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2024-12-22 15:49 , Processed in 0.102211 second(s), 22 queries .

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