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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2020-2-25 05:46:09 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
有时我们会使用一些java或node应用,但又不想让他们直接监听80端口,这时就需要用到端口转发
8 B; D6 Z/ [6 p; d3 N3 P: W
3 O  ]4 T# K" {本文中,我们介绍Nginx如何做端口转发,还有各种转发规则" W  M5 _" L- w. |8 b+ m' B% R
# {  E0 f& j) b; _( T2 k
将域名转发到本地端口' W+ I* P* ^9 _
首先介绍最常用的,将域名转发到本地另一个端口上
# |1 k7 u$ e! V, @) N3 _- q
  1. server{
    $ t* o* _: k5 _+ g, B5 h2 `
  2.   listen 80;" V* g' {) l+ N# R1 g% ~, @
  3.   server_name  tomcat.cncml.com;
    3 D/ W% [1 @% @
  4.   index  index.php index.html index.htm;
    . @! F% t0 E) v9 w3 T
  5. . k7 e* {: C2 v- A6 b) I/ x
  6.   location / {
    8 N0 X) f4 t( R1 V
  7.     proxy_pass  http://127.0.0.1:8080; # 转发规则
    / m& ^! i' [% R/ v, @4 C
  8.     proxy_set_header Host $proxy_host; # 修改转发请求头,让8080端口的应用可以受到真实的请求" r" X+ Q, g# |! P
  9.     proxy_set_header X-Real-IP $remote_addr;
    " Q' p! V7 a) q; W  q0 @+ Z
  10.     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;3 X3 [$ n! Q) O- Z1 u& @- J4 F
  11.   }
    - _! f+ ^. I- t9 a7 B4 T
  12. }
复制代码
这样访问 http://tomcat.cncml.com 时就会转发到本地的 8080 端口
0 w6 S: }2 I' T
$ ], q" n# |# w. g# G" W, B" b5 I将域名转发到另一个域名
& \& G+ `4 t8 y. n& v0 V
  1. server{
      F- m  ?2 B8 B- l8 l
  2.   listen 80;( {7 t- |: l9 m4 d9 s" l( c
  3.   server_name  baidu.cncml.com;
      @' I9 A) y# S' p5 t1 N4 J: C
  4.   index  index.php index.html index.htm;/ e" l; K, ^+ o7 U" B, M" G" J

  5. # Z9 d3 Z  k( c( m4 H/ v
  6.   location / {
    + J% h; E& S* R+ @2 H
  7.     proxy_pass  http://www.baidu.com;
    & j7 K7 F3 N' F
  8.     proxy_set_header Host $proxy_host;6 A3 c! ]7 `$ l  d7 K7 ?4 i$ k
  9.     proxy_set_header X-Real-IP $remote_addr;
    0 V; d4 o! u  l- g
  10.     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;9 q/ Y1 c! T. L* \+ S& X  d
  11.   }' h5 o, T: V1 h1 p3 L; o' e2 c! j5 E
  12. }
复制代码
[size=0.6]这样访问 http://baidu.cncml.com 时就会转发到 http://www.baidu.com
本地一个端口转发到另一个端口或另一个域名1 A; r# s: S7 O$ S- p
  1. server{/ v) W1 Z, q6 m9 w5 C6 x# ~7 N
  2.   listen 80;  ~1 T3 R& x6 Z; `3 p" A& P0 p$ N
  3.   server_name 127.0.0.1; # 公网ip
    , p8 }- X% w+ b8 P: j$ q
  4.   index  index.php index.html index.htm;8 M" C! z5 }$ W" L
  5. ' C' e$ f' H: |4 \
  6.   location / {
    1 G1 |/ W# Z) }5 x! e9 q2 F* w
  7.     proxy_pass  http://127.0.0.1:8080; # 或 http://www.baidu.com) s% f- D! g8 ]  g& {' o- ]  u
  8.     proxy_set_header Host $proxy_host;6 j9 T# y- W) K- Q, F8 j
  9.     proxy_set_header X-Real-IP $remote_addr;3 s- K7 J; J" T" Q5 v3 h8 q
  10.     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    " j- |5 p) g* d* s, ~  W
  11.   }( K+ L( u% r& W7 t1 f( f
  12. }
复制代码
这样访问 http://127.0.0.1 时就会转发到本地的 8080 端口或 http://www.baidu.com
5 j6 ?  e& X) K# O: ]. Q7 A/ M6 x2 b6 v+ m3 ^& ]
加 / 与不加 /( T, }0 `$ W+ g. d2 B
在配置proxy_pass代理转发时,如果后面的url加/,表示绝对根路径;如果没有/,表示相对路径6 j  S) S* i! q$ {" ^
9 _' F# G' b2 G. _- m, V
例如
3 J7 q, X  n# r' t2 W; s3 Q" |, P& g4 c1 a
加 /2 d7 y, a  Z' M, t/ H0 u
  1. server_name cncml.com4 w. Z$ W, c. L1 y9 ^
  2. location /data/ {
    & S; T# p& ^+ V4 o, l! U
  3. proxy_pass http://127.0.0.1/;
    3 ^% e4 w% v4 h$ c0 L
  4. }
复制代码
访问 http://cncml.com/data/index.html 会转发到 http://127.0.0.1/index.html. @9 B: f8 r- X9 ~* c3 H, F6 H

# y' e1 e! ]0 e. v不加 /
' Q, p( N( J8 ?( J( @
  1. server_name cncml.com2 \4 [7 u5 a5 U6 b6 {) K
  2. location /data/ {
    5 e8 m+ y& V# y) b9 D& n
  3. proxy_pass http://127.0.0.1;8 \4 [8 A4 g  P- [6 n
  4. }
复制代码
访问 http://cncml.com/data/index.html 会转发到 http://127.0.0.1/data/index.html
+ _' J; H: P* u! E1 |4 c- E3 N1 h
1 Z* @; l: h8 `$ R/ p  M1 U
游客,如果您要查看本帖隐藏内容请回复

, ~( S& v8 k4 f
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2026-4-30 21:46 , Processed in 0.053742 second(s), 20 queries .

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