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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2020-2-25 05:46:09 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
有时我们会使用一些java或node应用,但又不想让他们直接监听80端口,这时就需要用到端口转发
  ?  w9 W% m6 S: ]$ n& [6 q* G2 M1 B) t& }
本文中,我们介绍Nginx如何做端口转发,还有各种转发规则
4 _( e* t" l0 V$ x- O( i- ?/ r. K: y! G% X% l
将域名转发到本地端口
* ^  O+ \0 Y& |* ?' X) Z首先介绍最常用的,将域名转发到本地另一个端口上
/ A# F7 m8 c. a$ R
  1. server{
    3 U+ I+ Y: x( z) m- H$ i
  2.   listen 80;- o; W# a" O+ I$ _1 S# M  L$ m( Y
  3.   server_name  tomcat.cncml.com;! M" Z" v% h8 t6 T
  4.   index  index.php index.html index.htm;& g+ s; i0 U. M! z9 D

  5. - [$ q* _/ F1 ^: X1 m
  6.   location / {
    7 O' g( z) ~6 J+ E9 ], Y# s$ q
  7.     proxy_pass  http://127.0.0.1:8080; # 转发规则* w8 ]$ T4 G' x* R5 b, G" a4 c8 c5 B+ K
  8.     proxy_set_header Host $proxy_host; # 修改转发请求头,让8080端口的应用可以受到真实的请求
    " ?0 @$ F3 N" j% r' D
  9.     proxy_set_header X-Real-IP $remote_addr;4 p- J- J* \* ]3 g9 d3 a
  10.     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;$ h+ w- H% {" I( c0 _( U
  11.   }
    ! D7 q6 M  k; [. o% v2 `
  12. }
复制代码
这样访问 http://tomcat.cncml.com 时就会转发到本地的 8080 端口; l' c8 A; u5 `# c0 u
' p3 Z$ t' O! z$ J) ]& E
将域名转发到另一个域名6 |. c( i4 w4 s3 B
  1. server{
    , B/ N& C; l  f" o% j' U
  2.   listen 80;
    4 {, N* T- E* T4 i- P2 Z
  3.   server_name  baidu.cncml.com;
    1 A# H6 s; J: x
  4.   index  index.php index.html index.htm;
    ! m2 P; Y" N8 M4 A2 W5 p

  5. / W/ M& \, }6 B0 I; B
  6.   location / {
    9 K1 i7 Q0 X6 |7 g7 ^
  7.     proxy_pass  http://www.baidu.com;
    ' V2 J6 a% t0 f
  8.     proxy_set_header Host $proxy_host;
    4 t; Y7 V% n; r0 M! ]9 @
  9.     proxy_set_header X-Real-IP $remote_addr;: Q' u; D6 {1 M. c. v
  10.     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    : f2 @* I0 q; P2 c3 @  W" E- W
  11.   }
    ' l/ [/ x* P7 @) G, Y2 x3 c
  12. }
复制代码
[size=0.6]这样访问 http://baidu.cncml.com 时就会转发到 http://www.baidu.com
本地一个端口转发到另一个端口或另一个域名
! M6 u2 w7 |. z* X+ `
  1. server{  ?& X) q) t& P4 e* P: B8 [& P
  2.   listen 80;
    ' Y, \2 d5 Y8 G# X4 X3 I  o% f
  3.   server_name 127.0.0.1; # 公网ip
    % Y, C( f) s( p$ E! q2 o
  4.   index  index.php index.html index.htm;
    2 k# _; @9 `" B& ~1 Z
  5. - d3 P. z% ^4 p/ t9 L
  6.   location / {3 u" n9 s9 o$ l2 n/ d, y/ C. l
  7.     proxy_pass  http://127.0.0.1:8080; # 或 http://www.baidu.com2 ?' v* p# r2 f+ r" h
  8.     proxy_set_header Host $proxy_host;
    4 }2 p2 H8 r# O& E' G5 ^
  9.     proxy_set_header X-Real-IP $remote_addr;
    ! x: ?  k& j. I1 d$ b2 |' |
  10.     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    : a9 R3 C4 s5 k0 D
  11.   }2 _1 T: |! B3 R! p- I+ P; T* T
  12. }
复制代码
这样访问 http://127.0.0.1 时就会转发到本地的 8080 端口或 http://www.baidu.com9 u1 A0 I. q  h, g4 X
, o7 e/ ]8 J$ Q# w* S3 w% i3 p4 K
加 / 与不加 /% ]0 k% i" n" {
在配置proxy_pass代理转发时,如果后面的url加/,表示绝对根路径;如果没有/,表示相对路径
' I" M5 u* X8 L- U% p
9 X+ r+ Y" \4 N例如: J2 k0 w7 ?* Z) o$ u( O9 f
8 J" V! t3 [0 C% \0 W7 M4 F/ B/ `
加 /8 n! x$ h7 j6 W* K) I5 g
  1. server_name cncml.com
    . }, f1 j, _6 {: P7 B
  2. location /data/ {
    0 a# D  a9 G  U) x
  3. proxy_pass http://127.0.0.1/;3 w: ^$ W8 C7 F" Q  `' [
  4. }
复制代码
访问 http://cncml.com/data/index.html 会转发到 http://127.0.0.1/index.html
! m: x! M1 x  n3 e0 G: K7 o) _9 C& d) O+ Q4 _; T9 I+ Z" S3 s* \% Z( J
不加 /
: {* ~0 L4 |" _. G: \( `
  1. server_name cncml.com
    , ~' q/ _. w: [+ |5 {
  2. location /data/ {
    2 u( \2 c" {' `' ~1 h" W  V
  3. proxy_pass http://127.0.0.1;; X$ `3 y" W3 P( A
  4. }
复制代码
访问 http://cncml.com/data/index.html 会转发到 http://127.0.0.1/data/index.html# ~" z) Z0 v: i- ]0 o

  F/ v  {' e$ }
游客,如果您要查看本帖隐藏内容请回复

. i9 M. h( K' \* ~6 s* v7 i. b  s
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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