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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2020-2-25 05:46:09 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
有时我们会使用一些java或node应用,但又不想让他们直接监听80端口,这时就需要用到端口转发* J$ c! i5 v, j  ~# N  g. i

5 o4 ]3 B" I) c. l2 K* r1 |# a1 v本文中,我们介绍Nginx如何做端口转发,还有各种转发规则
0 h4 [5 W: D; e" d+ s) X2 v! ]* {
; `( v4 d# z* b, n  _* k将域名转发到本地端口
+ d1 u  q% `: [6 ~首先介绍最常用的,将域名转发到本地另一个端口上
2 l- e- p5 W0 p/ [- |( p0 n* g
  1. server{. E0 s& T' |5 Y: W8 _
  2.   listen 80;
    # R! c2 K6 F, O- H% s
  3.   server_name  tomcat.cncml.com;' H# y+ t6 t, T& O
  4.   index  index.php index.html index.htm;
    4 {+ D  K- m: O- {
  5. 4 N9 g1 z+ G" p
  6.   location / {4 r4 ~7 ~" _" _, k4 R1 _
  7.     proxy_pass  http://127.0.0.1:8080; # 转发规则! V2 c, S; o: U! V* ]4 r
  8.     proxy_set_header Host $proxy_host; # 修改转发请求头,让8080端口的应用可以受到真实的请求2 r, h9 o5 _1 M
  9.     proxy_set_header X-Real-IP $remote_addr;
    6 h% L' D* H  [0 X( u) S
  10.     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    ( F) s% _) ^3 i! E4 _% t2 s
  11.   }
    & s" w4 ~# y2 u7 @* u
  12. }
复制代码
这样访问 http://tomcat.cncml.com 时就会转发到本地的 8080 端口# w6 @6 `2 ]2 N4 o6 Q
  o" \$ p: I8 O  L  m3 S" w- x
将域名转发到另一个域名
) e) S3 i( q4 l
  1. server{
    ( O$ C, ?" {+ v4 e3 G
  2.   listen 80;; {! M4 n* I2 {7 U* N
  3.   server_name  baidu.cncml.com;& ?9 N7 |. H  ]- B) X  `
  4.   index  index.php index.html index.htm;
    8 X+ D! W( b9 _
  5. 4 H, g) Y- I- n; h/ K: N
  6.   location / {
    / B: r& W3 Z# U9 N0 v7 ?  V
  7.     proxy_pass  http://www.baidu.com;. P4 R. x/ J. o
  8.     proxy_set_header Host $proxy_host;
    ' m6 Y. K2 ~8 C* j& b  z
  9.     proxy_set_header X-Real-IP $remote_addr;' Q5 k3 T, Z* |7 B
  10.     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;9 F: w1 R" Q! e$ X, ?& z5 B1 O
  11.   }
    ! k, d$ f/ F1 z0 ^$ o  J' j
  12. }
复制代码
[size=0.6]这样访问 http://baidu.cncml.com 时就会转发到 http://www.baidu.com
本地一个端口转发到另一个端口或另一个域名' T2 y) X, ]0 @5 {3 b% ]" S- j1 u
  1. server{  s1 }0 |% G, Z
  2.   listen 80;: x, e. t2 L1 L# z
  3.   server_name 127.0.0.1; # 公网ip5 i" E0 n2 I* t7 H
  4.   index  index.php index.html index.htm;
    # C8 L9 s. Q2 `  A+ i' K7 E, Y( t! l

  5. 0 i  W1 r( j6 n* }" k+ D3 r( t
  6.   location / {
    ) O( I2 k9 u3 Y' G& \
  7.     proxy_pass  http://127.0.0.1:8080; # 或 http://www.baidu.com
    4 `) W* Q7 ^( w& E0 \& ?5 r/ J
  8.     proxy_set_header Host $proxy_host;: F  p% d9 a! J
  9.     proxy_set_header X-Real-IP $remote_addr;3 }) B7 z5 S& i' F' [
  10.     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;0 a4 q; P& E- v. R
  11.   }7 u( F- Z' V7 O8 {9 F
  12. }
复制代码
这样访问 http://127.0.0.1 时就会转发到本地的 8080 端口或 http://www.baidu.com
# d# D$ X( `) n6 T& w" f' r& U
( T8 D! w9 g2 j  t! ~) T4 q9 K7 w加 / 与不加 /
& a% Z( o# y8 {在配置proxy_pass代理转发时,如果后面的url加/,表示绝对根路径;如果没有/,表示相对路径
8 M% C9 p6 R$ R! T/ d9 ?" ^1 Q- g( X5 _2 x" x3 b- c
例如5 Q) K; x1 e# @* `- f2 _9 P6 T7 w( y

$ i+ R3 K5 ^7 s" k% ~- N8 f. Z9 Z# v加 /
, `5 f& G5 E( S& {- ?
  1. server_name cncml.com* U) g% q( p8 L& s
  2. location /data/ {
    * d9 W* [$ _- [; e2 i) A6 W. i
  3. proxy_pass http://127.0.0.1/;
    $ f2 U% ]4 i# Q- U6 _6 h3 q
  4. }
复制代码
访问 http://cncml.com/data/index.html 会转发到 http://127.0.0.1/index.html
$ L" {% f  W# X1 ?9 d3 w5 ~$ V4 C" G5 @- D" d' z. N8 T: @" {. b9 k
不加 /
8 h+ j0 |8 x: a, U% W! W
  1. server_name cncml.com$ @0 T) Q9 H3 n3 m5 Y
  2. location /data/ {& R1 V, F" G! @! g" ?
  3. proxy_pass http://127.0.0.1;' `$ v4 N# Q" X( p2 h: S' O
  4. }
复制代码
访问 http://cncml.com/data/index.html 会转发到 http://127.0.0.1/data/index.html
! S8 ~4 L( c0 [  d( F; |" }) {1 n( `: i
游客,如果您要查看本帖隐藏内容请回复
! ?+ t. i- f6 p' X. k1 d' I
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2024-12-22 12:00 , Processed in 0.101281 second(s), 19 queries .

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