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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2020-2-25 05:46:09 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
有时我们会使用一些java或node应用,但又不想让他们直接监听80端口,这时就需要用到端口转发
4 m# A! {; c7 r/ F( |* f. P6 P. p) J! x' B1 |
本文中,我们介绍Nginx如何做端口转发,还有各种转发规则
7 }+ S8 L, c% H) b3 N0 m) R0 |; ~/ f9 o! h
将域名转发到本地端口
) E) C& m) u. |9 l首先介绍最常用的,将域名转发到本地另一个端口上
; `9 d8 q3 m, F. f5 Q. i, I
  1. server{
    3 O5 U. V7 L. {
  2.   listen 80;" Q; Y, p9 I$ a2 ~, r
  3.   server_name  tomcat.cncml.com;5 C9 n9 J9 o. Z4 E: K0 ~
  4.   index  index.php index.html index.htm;
    ( a$ k  |; G% U4 }: ~" O) r2 B; F

  5. 6 C2 g  r4 q5 Y
  6.   location / {4 q: [. d2 }/ E3 K% P- Q5 P# F
  7.     proxy_pass  http://127.0.0.1:8080; # 转发规则! t. N' k: U# b) W' @; v
  8.     proxy_set_header Host $proxy_host; # 修改转发请求头,让8080端口的应用可以受到真实的请求
    8 h; x2 m/ J( b. _1 p
  9.     proxy_set_header X-Real-IP $remote_addr;# X8 f+ ^# u" ?1 x$ _9 T
  10.     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    : w7 l1 @8 S) X  S6 I% W& g0 D
  11.   }
    ' N8 u# F0 k4 @0 X
  12. }
复制代码
这样访问 http://tomcat.cncml.com 时就会转发到本地的 8080 端口& _, y$ d4 c# R

- E0 L) Z, \7 H" A* C9 c. y- F将域名转发到另一个域名) R/ N5 g0 s. s5 V2 s( _; U; [
  1. server{0 i% v, ~8 Z+ C( Q
  2.   listen 80;9 U5 j4 [( B7 e) `" Y  B2 T5 {4 d
  3.   server_name  baidu.cncml.com;
    ( x6 a, O# e5 P+ C
  4.   index  index.php index.html index.htm;
      t$ P2 ]! Q/ g0 j
  5. : H4 O1 ?8 i8 s9 Q; a% ]7 t$ k
  6.   location / {
    & g3 m, R2 h1 P2 k. Z% `: }
  7.     proxy_pass  http://www.baidu.com;
    4 z$ I) [5 E8 `+ x$ P9 T. `; b
  8.     proxy_set_header Host $proxy_host;
    2 h& {1 ?2 G  y! ]  J
  9.     proxy_set_header X-Real-IP $remote_addr;  x8 U2 `# _( o! V7 P3 v
  10.     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;9 j/ D; r+ L  [6 o  s1 S
  11.   }
    , N. t5 x  d0 x  [+ O0 O, p! N' J5 g3 J
  12. }
复制代码
[size=0.6]这样访问 http://baidu.cncml.com 时就会转发到 http://www.baidu.com
本地一个端口转发到另一个端口或另一个域名
! X) k, y7 }7 D
  1. server{3 \% H. L* f/ ]1 _
  2.   listen 80;( p4 Z- a* I; O2 N8 l) r
  3.   server_name 127.0.0.1; # 公网ip  `, F, G; Z: r
  4.   index  index.php index.html index.htm;5 Z/ R+ x6 ]' v) Y  R3 r5 X! b
  5. 3 ~! C9 W+ N- ^
  6.   location / {
    8 v: L* T  L( `) v0 j; ]
  7.     proxy_pass  http://127.0.0.1:8080; # 或 http://www.baidu.com
    " l- U" S- U3 M( J9 h- A8 [
  8.     proxy_set_header Host $proxy_host;
    ; x& E" v) S1 y" w4 }
  9.     proxy_set_header X-Real-IP $remote_addr;0 L, ]! D" e& B! I* {
  10.     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    ) L/ @( U4 n( b
  11.   }
    * r& [, T; M$ ?9 }5 r; v+ B
  12. }
复制代码
这样访问 http://127.0.0.1 时就会转发到本地的 8080 端口或 http://www.baidu.com$ |- t+ H3 N) X4 h  d& [* ?

. U- K. T4 d1 f8 N0 @4 ]加 / 与不加 /8 F5 n& Q' w5 Z
在配置proxy_pass代理转发时,如果后面的url加/,表示绝对根路径;如果没有/,表示相对路径. d& D& Y! v9 X/ |4 ]  @

* j5 n' b: v3 F$ `! V0 {例如& B0 r2 I/ b& W0 Q% P- W0 G

8 Q9 s( z$ u* {3 }4 i" V加 /
; ?) j5 m& p) U9 X) ]+ k
  1. server_name cncml.com
    & }% O  n  j+ r4 z5 ?
  2. location /data/ {& P' R9 E9 s# V6 }, e6 y7 T
  3. proxy_pass http://127.0.0.1/;" H; N6 b5 ~7 \8 u% |% R
  4. }
复制代码
访问 http://cncml.com/data/index.html 会转发到 http://127.0.0.1/index.html
' e4 f0 B" o  \
( T+ J# b5 g/ H# E# a" [& n不加 /4 l: V( z' j8 a' @% O3 ~1 |
  1. server_name cncml.com
    : ~: A2 C- [6 K: |+ v1 z
  2. location /data/ {% t% O* y% B, r* ~7 @0 z0 T  j
  3. proxy_pass http://127.0.0.1;5 p- _) y4 j5 c2 W) e
  4. }
复制代码
访问 http://cncml.com/data/index.html 会转发到 http://127.0.0.1/data/index.html" N' b5 }% z, L& s- H' V

) b- a9 O3 {4 k6 |% ~+ _* c" u6 R
游客,如果您要查看本帖隐藏内容请回复
5 x- L3 o0 \/ P! E
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2026-9-22 04:11 , Processed in 0.049077 second(s), 19 queries .

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