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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2020-2-25 05:46:09 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
有时我们会使用一些java或node应用,但又不想让他们直接监听80端口,这时就需要用到端口转发
* x% A9 U3 s( q& ~) _2 G: z# k6 b( V' x, M  D9 o& g% v) B5 h7 k
本文中,我们介绍Nginx如何做端口转发,还有各种转发规则4 v1 N( D4 b+ S# E/ [! q
+ t4 F0 L8 c0 X) T$ E9 q' z
将域名转发到本地端口
0 W: m! h2 R* ?8 x首先介绍最常用的,将域名转发到本地另一个端口上$ a3 q) N3 l% o) h% i+ ]3 s4 |
  1. server{
    $ l4 j) _2 O5 Z# Z5 P
  2.   listen 80;  X* p, U6 V/ q3 b5 \" \
  3.   server_name  tomcat.cncml.com;; X& ^7 T0 s$ R3 T4 T
  4.   index  index.php index.html index.htm;
    ! X# W/ s4 `  l- d6 N4 Z

  5. " J2 u3 d, b) P! d- r* ?) \( r! o
  6.   location / {& X1 C  g5 Q/ n- K3 v( q8 B0 M
  7.     proxy_pass  http://127.0.0.1:8080; # 转发规则
    7 e; ?' C/ Q4 y. W2 y
  8.     proxy_set_header Host $proxy_host; # 修改转发请求头,让8080端口的应用可以受到真实的请求
    & _" n8 h/ Q1 V) X& p2 x) Q' m$ x6 c
  9.     proxy_set_header X-Real-IP $remote_addr;5 U3 N2 ^/ S; M4 i# y; S6 ]: f! t; p
  10.     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    ' K- p9 a1 h$ m
  11.   }9 {, H" s) w( B! C( z
  12. }
复制代码
这样访问 http://tomcat.cncml.com 时就会转发到本地的 8080 端口! i# c  _" {& E) k9 M5 A
8 A5 i" c* K. @0 L* J3 b6 l4 ~
将域名转发到另一个域名
& k) D0 O6 W$ q  G) K6 d! Q* W
  1. server{/ I0 k, ?' C0 [3 H/ F$ `7 s# P
  2.   listen 80;
    - E+ h0 r* Q, V3 P* D, ]
  3.   server_name  baidu.cncml.com;
    ' s4 ^& T+ W) k! |7 [/ X6 \2 G( ~
  4.   index  index.php index.html index.htm;! e+ g' E. q0 s& ]8 c
  5.   L* W2 K4 e* P; Y
  6.   location / {
    6 W) V% F+ B1 j  X# `2 F
  7.     proxy_pass  http://www.baidu.com;
    ! {! V3 b4 I9 u3 _
  8.     proxy_set_header Host $proxy_host;# b, X* \3 Z0 V' Y& i" D  j% p0 [
  9.     proxy_set_header X-Real-IP $remote_addr;
    5 V" i/ S4 H8 m- U
  10.     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    , D$ f( Y" p2 F! V0 t
  11.   }4 S) L( l( [5 Z  V
  12. }
复制代码
[size=0.6]这样访问 http://baidu.cncml.com 时就会转发到 http://www.baidu.com
本地一个端口转发到另一个端口或另一个域名
  e$ ^( L/ {0 w: i. t5 @
  1. server{" P$ Q! z: b( W1 t; ?" `) c+ A) d: \
  2.   listen 80;
    7 Y3 g  Y- L+ T2 x5 y) |, Y$ e# g
  3.   server_name 127.0.0.1; # 公网ip1 z) ~$ R- J, w6 u9 _
  4.   index  index.php index.html index.htm;
    ; F9 g6 l7 d- x' x* {

  5. # s# u, `8 P1 b% e0 F( m
  6.   location / {
    ; c+ M) g; T$ Y" j6 }
  7.     proxy_pass  http://127.0.0.1:8080; # 或 http://www.baidu.com) w  M5 A' Z; G1 o+ @
  8.     proxy_set_header Host $proxy_host;
    / ]: @- `1 @1 l
  9.     proxy_set_header X-Real-IP $remote_addr;
    + z! e* I3 m; `8 k5 W. R$ ^
  10.     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;3 \5 l: w! T% v
  11.   }7 `: d+ q9 N" m7 {3 G
  12. }
复制代码
这样访问 http://127.0.0.1 时就会转发到本地的 8080 端口或 http://www.baidu.com/ o3 W- r* T2 Z9 ]9 ^# r1 ^

6 p- W5 l; v7 F% T! d# @$ S加 / 与不加 /
' R; Z/ h* P! @! F在配置proxy_pass代理转发时,如果后面的url加/,表示绝对根路径;如果没有/,表示相对路径- @) s1 @! R. _; }# B0 c0 ]

) q( r  z4 {' T  e2 h* B例如
3 T" B" }+ v) ]% _& S' e2 D. k' P9 |. W
加 /
& L1 C5 n5 L+ o/ S; X
  1. server_name cncml.com* t; X, r; @* R+ i
  2. location /data/ {
    3 V" C: l0 H7 W6 X1 @3 q
  3. proxy_pass http://127.0.0.1/;
    ( O/ \% c" x9 |. p/ [
  4. }
复制代码
访问 http://cncml.com/data/index.html 会转发到 http://127.0.0.1/index.html
" L; e1 t: P% z& m! l7 P+ ~  |& ?, O  e  m( Q/ R! n% Q
不加 /
4 q& U' T5 E2 d; n
  1. server_name cncml.com9 q" d) E1 e0 D# T4 a5 v# o% ^0 X
  2. location /data/ {' |) O; P7 p& y2 Y: m0 t5 U) b
  3. proxy_pass http://127.0.0.1;
    / c8 L; L* ]- L6 S
  4. }
复制代码
访问 http://cncml.com/data/index.html 会转发到 http://127.0.0.1/data/index.html( g5 G' |$ Q+ x' c8 ^
) f2 M3 i# w7 X* S) F) y6 k
游客,如果您要查看本帖隐藏内容请回复
6 x3 A0 ]! `( W5 [7 a2 K
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2024-5-19 06:27 , Processed in 0.116530 second(s), 20 queries .

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