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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2020-2-25 05:46:09 | 显示全部楼层 回帖奖励 |倒序浏览 |阅读模式
有时我们会使用一些java或node应用,但又不想让他们直接监听80端口,这时就需要用到端口转发- P( d4 E* |$ ^6 ?, B

4 K. g+ ]6 u. g, x% R" N* o本文中,我们介绍Nginx如何做端口转发,还有各种转发规则8 k( Y, ~8 ^- `' o7 a% ^: b
- x, |! p( P9 W% w- d
将域名转发到本地端口* H& y+ i5 e3 Y
首先介绍最常用的,将域名转发到本地另一个端口上. g, \3 y: i9 [
  1. server{, n1 r- u5 Q6 J& ?& Y8 C' I" f
  2.   listen 80;
    % ]( [0 {! c& }& t
  3.   server_name  tomcat.cncml.com;; ]' |8 t. ^, ^  u  L, b8 k: N
  4.   index  index.php index.html index.htm;/ B9 J& }# h, n5 f
  5. : B# g- m8 v  U
  6.   location / {
    3 O0 {3 ?/ q$ ~7 p
  7.     proxy_pass  http://127.0.0.1:8080; # 转发规则3 _5 T5 h; d* H: S$ O9 @. [* a
  8.     proxy_set_header Host $proxy_host; # 修改转发请求头,让8080端口的应用可以受到真实的请求  g1 @1 @5 c. s# u! ^6 V
  9.     proxy_set_header X-Real-IP $remote_addr;
    9 y+ }, x9 W! i# r) ?* P
  10.     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    7 B7 X7 a: O3 _6 G; t. @( [" O" r
  11.   }+ R4 q" S0 B8 |; \
  12. }
复制代码
这样访问 http://tomcat.cncml.com 时就会转发到本地的 8080 端口. m- Q- p8 `2 s% h4 c
1 h8 v. d. O9 s, W$ b0 E! ~
将域名转发到另一个域名# a  n+ M# N/ e: x/ J  q- t% y
  1. server{7 |6 _& A. m# S: c# u0 M  A
  2.   listen 80;
    4 ]: w, R. S# X- n9 M4 S  o9 c& I6 h, t
  3.   server_name  baidu.cncml.com;& E$ d% w* D( m1 ]2 C
  4.   index  index.php index.html index.htm;
    $ d9 }1 c/ O& H* w6 }6 G

  5. & h# H4 d1 r$ O( G& s
  6.   location / {+ m0 ?% I# g( i1 S
  7.     proxy_pass  http://www.baidu.com;* P5 N/ Y1 D; P
  8.     proxy_set_header Host $proxy_host;
    2 A. O+ L+ G- h8 s
  9.     proxy_set_header X-Real-IP $remote_addr;
    ! V3 G: r( {4 b1 \; Y
  10.     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;4 @( K! ~, I# y& j( j) N0 b
  11.   }- l4 O! {5 q7 c8 K
  12. }
复制代码
[size=0.6]这样访问 http://baidu.cncml.com 时就会转发到 http://www.baidu.com
本地一个端口转发到另一个端口或另一个域名( e0 k, ~: ]* l. S& _. N
  1. server{5 e& Y5 c+ v1 y* o! C/ e( W
  2.   listen 80;* B. }( U4 q8 t7 K2 `9 @
  3.   server_name 127.0.0.1; # 公网ip! T  y6 d3 V4 E! Q
  4.   index  index.php index.html index.htm;
      h% M( v2 x5 d$ `0 {# v# i
  5. : G2 x6 x* v" s' T; s  y
  6.   location / {
    4 L; s+ g" O& Q% g1 A
  7.     proxy_pass  http://127.0.0.1:8080; # 或 http://www.baidu.com5 w+ w" x3 n4 o
  8.     proxy_set_header Host $proxy_host;
    9 m5 T% v# Y# T. j5 Q* y1 ^
  9.     proxy_set_header X-Real-IP $remote_addr;
    + u, B2 g( z" y  a7 K
  10.     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    ! d* _9 r$ f6 `5 e8 P
  11.   }8 }8 \8 V6 `: [' Y0 g% c5 E
  12. }
复制代码
这样访问 http://127.0.0.1 时就会转发到本地的 8080 端口或 http://www.baidu.com7 v8 U+ D% S; K5 }
9 x( z* }3 Z8 E: D
加 / 与不加 /" H1 Z. |6 Y2 Q5 n6 p
在配置proxy_pass代理转发时,如果后面的url加/,表示绝对根路径;如果没有/,表示相对路径# n4 ?. O3 e  W8 t9 E
& ]! S8 p# z' v; C
例如
0 c, b* O+ A/ T4 e  V$ F4 l* M( {6 u; V! I7 ]- W+ L: q# G! j# k
加 /, K0 v+ T4 P/ N( u2 I" K. j
  1. server_name cncml.com4 M. _8 m0 U' C! ~  b2 t
  2. location /data/ {
    ; z* d: m" J3 w0 |/ n6 R3 e0 ^
  3. proxy_pass http://127.0.0.1/;
    ( i7 T+ t) e( \0 `( c& g8 z( ^/ k
  4. }
复制代码
访问 http://cncml.com/data/index.html 会转发到 http://127.0.0.1/index.html% M/ R# @; w0 [4 Y; B

* W; q& \* M8 d8 O) U& y7 W5 y4 R& s不加 /
$ a3 @; J; t/ w! y" ]) r
  1. server_name cncml.com
      g* c& ~. [( ~- ~+ J) \
  2. location /data/ {# P1 p% o" I* {8 R' @, C2 O0 r/ P
  3. proxy_pass http://127.0.0.1;' T5 `" k. n8 Z) G
  4. }
复制代码
访问 http://cncml.com/data/index.html 会转发到 http://127.0.0.1/data/index.html  l7 W* o' i  K! Y
  R4 `) n1 L' q- ?3 N! X( G- t3 D
游客,如果您要查看本帖隐藏内容请回复

8 w( f' a. |1 F# o
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2024-5-7 07:49 , Processed in 0.127492 second(s), 19 queries .

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