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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2020-2-25 05:46:09 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
有时我们会使用一些java或node应用,但又不想让他们直接监听80端口,这时就需要用到端口转发
: z# V1 ^; @5 Y4 G, Z8 M% l* F9 m0 h2 I& d7 B. E
本文中,我们介绍Nginx如何做端口转发,还有各种转发规则# B3 E0 O. l: P1 U& p  ?
! |- y! K- o2 M+ I  x
将域名转发到本地端口( |+ @0 s& G& w: |
首先介绍最常用的,将域名转发到本地另一个端口上7 ~7 Q% ~# m" z- v$ w
  1. server{
    9 s1 ?5 t: J) p9 Q% u: M! c( A* p0 N
  2.   listen 80;' `$ B8 M$ }6 L- N) u2 e
  3.   server_name  tomcat.cncml.com;
    , ~0 f: M& d! a/ b0 d
  4.   index  index.php index.html index.htm;( X. M. `. Z/ \7 F3 K% |
  5. 0 u3 ]* c! P/ ^* b  y
  6.   location / {6 [% Z( H! N1 l( [( F! k
  7.     proxy_pass  http://127.0.0.1:8080; # 转发规则: k9 w/ U5 }, {& A8 Z5 ^  Q: Z0 Y
  8.     proxy_set_header Host $proxy_host; # 修改转发请求头,让8080端口的应用可以受到真实的请求8 K4 ]4 K  u  E
  9.     proxy_set_header X-Real-IP $remote_addr;" b+ p0 X/ ~0 e5 o4 C& d7 f3 F
  10.     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    " l9 e' x% \, j
  11.   }
    & y+ c3 ]! _% V
  12. }
复制代码
这样访问 http://tomcat.cncml.com 时就会转发到本地的 8080 端口  O' N; d0 d# ]) X( }( k

1 S9 u: W. j+ z! R0 J将域名转发到另一个域名; L; Q1 s0 ~+ _0 d) f/ d/ W
  1. server{- e: r  u0 u3 v; F- `
  2.   listen 80;
    7 x3 G9 G% G9 n6 [
  3.   server_name  baidu.cncml.com;
    ; G: v* q& h  h8 A5 x; u3 o! |. l
  4.   index  index.php index.html index.htm;- y+ P' P+ ^* a" l9 I5 v
  5. / N$ Y: A, A* p1 ~/ q% `7 S" |. g
  6.   location / {
    * G% s7 n; |9 U9 u
  7.     proxy_pass  http://www.baidu.com;/ ]* d, d" s+ N
  8.     proxy_set_header Host $proxy_host;4 {! N; A5 s% Q* T" [2 H9 g" s5 ?/ g
  9.     proxy_set_header X-Real-IP $remote_addr;
    * u6 `. J- `7 h% d  F
  10.     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;( `' f; j8 X( f- S2 c
  11.   }
    ; u0 `* o# o) q7 }4 `* ~# r$ N+ m% d
  12. }
复制代码
[size=0.6]这样访问 http://baidu.cncml.com 时就会转发到 http://www.baidu.com
本地一个端口转发到另一个端口或另一个域名
7 v+ H* l; }& D- L4 V1 h
  1. server{
    9 B: X" b6 q/ K3 ~0 W/ \) R
  2.   listen 80;1 ~) R4 H' }( i1 T
  3.   server_name 127.0.0.1; # 公网ip( ]0 j" n7 Z. G
  4.   index  index.php index.html index.htm;
    : u! U, @" G% l3 ~6 p4 h* C" h

  5. 5 y; B8 x; E8 t" ]. i6 y
  6.   location / {% K4 c+ ~$ J0 `! [5 o1 I* H' o
  7.     proxy_pass  http://127.0.0.1:8080; # 或 http://www.baidu.com, g6 {* E- ?0 s, a
  8.     proxy_set_header Host $proxy_host;
    # d0 |4 t/ z# p9 B
  9.     proxy_set_header X-Real-IP $remote_addr;
    0 g$ P- z+ a& N' W9 p+ ]& ?
  10.     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    8 o: N7 D/ B- W6 z% A
  11.   }. S: Q. V) ^! X: ]/ Z5 c4 e& R
  12. }
复制代码
这样访问 http://127.0.0.1 时就会转发到本地的 8080 端口或 http://www.baidu.com
) ?' [7 ?9 p& D: m
1 U! ]- R$ V, {$ H/ F" G; h4 |加 / 与不加 /- {* W; s9 l, n1 G1 i' M3 {3 V$ B
在配置proxy_pass代理转发时,如果后面的url加/,表示绝对根路径;如果没有/,表示相对路径$ w' d7 K% u7 W/ F' M) ?, j3 X

# k* @3 h7 n, X8 X) t例如
7 V7 x0 n" p/ h! m" P6 p0 j/ a$ Y$ F, [1 l. J
加 /2 }( l- H3 D3 }6 q4 n! J4 w$ n8 _" Q
  1. server_name cncml.com
    8 r# C8 I: y. e+ `4 S# S" E2 i0 e
  2. location /data/ {# M9 [  z' l5 b5 N' \1 Q4 t8 U
  3. proxy_pass http://127.0.0.1/;8 T! Q7 X# K/ _! H* d8 f+ Y
  4. }
复制代码
访问 http://cncml.com/data/index.html 会转发到 http://127.0.0.1/index.html
% ?7 S$ O7 Z) C. R) T
8 F, X6 q" ~) |" V) Y不加 /
* N: \& x0 {  o3 h# q
  1. server_name cncml.com, S+ i6 z8 ^8 V) |0 L  N) i8 n
  2. location /data/ {
    ) W2 ~, ^0 V* @3 ?- V6 y
  3. proxy_pass http://127.0.0.1;3 e) L& p7 C) n. n; v
  4. }
复制代码
访问 http://cncml.com/data/index.html 会转发到 http://127.0.0.1/data/index.html
1 G8 l" M' W& B. n0 y9 M8 ]
4 v( \. O: I4 W6 T" V
游客,如果您要查看本帖隐藏内容请回复

& `: i2 L  V3 q6 A* H
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2026-9-21 04:41 , Processed in 0.053156 second(s), 20 queries .

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