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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

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

% ^& v" Z# S+ g本文中,我们介绍Nginx如何做端口转发,还有各种转发规则1 j1 _* i/ }) W% K

- i$ y# r3 M7 i. Z+ o7 }9 `6 r将域名转发到本地端口  \# ?# p* s1 K
首先介绍最常用的,将域名转发到本地另一个端口上
8 \3 B' h! r7 C1 y$ l7 ^7 [1 n6 v+ X
  1. server{
    8 p" p7 G' f- G1 b/ _
  2.   listen 80;
    $ h1 x6 y6 }% S1 n' J" e) K
  3.   server_name  tomcat.cncml.com;
    % D! R& @: T5 u: ^- {
  4.   index  index.php index.html index.htm;
    + _- x9 O4 z9 P* J
  5. 5 @: q0 V3 B3 b
  6.   location / {
    / F6 t1 L/ A# W- X+ z- v
  7.     proxy_pass  http://127.0.0.1:8080; # 转发规则
    - ]& S* x: {* V0 M* C5 t
  8.     proxy_set_header Host $proxy_host; # 修改转发请求头,让8080端口的应用可以受到真实的请求6 [$ n4 D7 v" K$ ^' U
  9.     proxy_set_header X-Real-IP $remote_addr;
    3 P. @% S! c1 E" w3 q" U5 Y
  10.     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    ; m# f" `4 M5 _+ W$ W, `
  11.   }# B& G3 V- V, V3 O- Q7 ~/ I. \' H
  12. }
复制代码
这样访问 http://tomcat.cncml.com 时就会转发到本地的 8080 端口! W, R0 N/ _* _- V, t) K

2 y9 g- e" u6 c2 n将域名转发到另一个域名
" }" V& ?! d0 d, \' K) W0 V6 C5 x  C
  1. server{- _5 h$ F, H+ C1 v' `) D: M
  2.   listen 80;) Z3 W& }9 L/ u4 Y
  3.   server_name  baidu.cncml.com;
    1 G  S0 T2 q* k, H4 w
  4.   index  index.php index.html index.htm;
    . p& P( ?5 I/ M, m
  5. # u5 m' ^/ A1 j+ z
  6.   location / {
    " W0 e, x, p+ m. {
  7.     proxy_pass  http://www.baidu.com;8 f$ m8 O5 m" ?; v8 B* p3 u9 R; d4 [
  8.     proxy_set_header Host $proxy_host;) Y1 _& [/ t' v: |' N2 B" @% i
  9.     proxy_set_header X-Real-IP $remote_addr;
    ( u% Z! ~* Z8 `/ n+ ~
  10.     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    6 W# ^2 N6 _9 \6 l
  11.   }: H% x/ I* ]5 c  w  u1 ~
  12. }
复制代码
[size=0.6]这样访问 http://baidu.cncml.com 时就会转发到 http://www.baidu.com
本地一个端口转发到另一个端口或另一个域名. j) G! ^& n4 s1 x/ G
  1. server{
    ( a( U  c- q9 j
  2.   listen 80;
      R- ~0 ?; {9 j
  3.   server_name 127.0.0.1; # 公网ip
    9 M/ J& j; x0 ~* s% c
  4.   index  index.php index.html index.htm;
      L" W% F6 E" O4 e) x, a$ k( v% |
  5. & T$ b1 D, ^/ L
  6.   location / {
    % T& T  p" ~. r3 h% T( I7 B# z
  7.     proxy_pass  http://127.0.0.1:8080; # 或 http://www.baidu.com
    ! |0 W; ]  U7 T- _$ W
  8.     proxy_set_header Host $proxy_host;
    , J* X2 e+ @: o: ], k
  9.     proxy_set_header X-Real-IP $remote_addr;$ E, }: i4 X% [( q
  10.     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    1 p, A! h: U" M9 a0 b9 b/ v# j6 [
  11.   }
    " g# g; _' f5 a' z6 j2 S0 h% _
  12. }
复制代码
这样访问 http://127.0.0.1 时就会转发到本地的 8080 端口或 http://www.baidu.com
6 C+ v: ^' D8 y3 p6 [
7 \5 `  U) Z1 ?# N: e7 a6 C加 / 与不加 /3 C! o6 J% E' o
在配置proxy_pass代理转发时,如果后面的url加/,表示绝对根路径;如果没有/,表示相对路径
2 n6 O. c6 u3 F, ?$ n( N, t/ y2 U0 h- m4 [8 o0 L/ Z9 X9 B# i3 a
例如+ R4 s! u" x% L, E; s

: ?$ `2 q. j7 X$ z: k. K7 A. }加 /
7 Q+ ]/ ^- r+ d# {1 m. U
  1. server_name cncml.com$ W- a. N* e: D5 K" _" r! e
  2. location /data/ {) O' l; ~5 W! ^# ?) \3 W
  3. proxy_pass http://127.0.0.1/;
    ; e; u  m* N/ s2 T0 d5 ^; f9 @
  4. }
复制代码
访问 http://cncml.com/data/index.html 会转发到 http://127.0.0.1/index.html
5 i# Y' ^/ c+ @, M1 P% h# `" |$ @$ d) a& l, ~# m$ @/ V  J1 l2 L. U
不加 /; \# v$ _0 @! h7 S; [0 |' ~+ z
  1. server_name cncml.com7 G) }5 a9 \  ?# g) V
  2. location /data/ {7 h2 B# E$ r3 N; l
  3. proxy_pass http://127.0.0.1;- Q  g! X+ l+ }" Y
  4. }
复制代码
访问 http://cncml.com/data/index.html 会转发到 http://127.0.0.1/data/index.html
# _' T7 L) i" [. D/ Y. ~/ a) R
( S' [3 A& A; h8 ~$ Y' s
游客,如果您要查看本帖隐藏内容请回复

2 k& I) @6 [" I! R) W7 ^
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2026-8-4 12:44 , Processed in 0.055736 second(s), 19 queries .

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