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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2020-2-25 05:46:09 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
有时我们会使用一些java或node应用,但又不想让他们直接监听80端口,这时就需要用到端口转发' T0 O' S" b9 C% d" O8 x0 Q: w/ Q" j

. l8 F; R5 Y1 T9 {6 S6 u3 K本文中,我们介绍Nginx如何做端口转发,还有各种转发规则: n( j1 @) o+ ^) f/ g3 i- R$ q! D
. i' C( N  E4 r; d+ c& @( X- \
将域名转发到本地端口
3 b- A, P% f* }& e2 X" k; ]' z首先介绍最常用的,将域名转发到本地另一个端口上
. K; D, r/ |) Q7 v/ I4 a$ B
  1. server{
    ; G" g  Z4 J6 m; x" i' V6 a; v
  2.   listen 80;
    ( e) a2 a, j  y/ ]% [
  3.   server_name  tomcat.cncml.com;
    " T6 U8 V: T& P# m8 _6 l; ]
  4.   index  index.php index.html index.htm;" g7 _/ F4 _( V7 ^# ^
  5. & m" m& Y6 u4 C+ C
  6.   location / {+ v9 u7 p; H* v$ }
  7.     proxy_pass  http://127.0.0.1:8080; # 转发规则
    $ {6 Y8 c+ ?* ]( m% r
  8.     proxy_set_header Host $proxy_host; # 修改转发请求头,让8080端口的应用可以受到真实的请求
    0 ?, \2 W/ l4 b% y
  9.     proxy_set_header X-Real-IP $remote_addr;
    % M3 d6 B0 ]& c, U- Y3 v
  10.     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    7 G6 u  ^2 M. @4 k  z" A8 A
  11.   }- w: o) i5 I& h
  12. }
复制代码
这样访问 http://tomcat.cncml.com 时就会转发到本地的 8080 端口
  f% ]$ a% J# I6 ^% s, W& `3 A
' r; S4 Z! b7 J" @0 `, F将域名转发到另一个域名
; G7 l7 [, a1 F& {! W
  1. server{
    7 H1 J% y) ^0 K8 m
  2.   listen 80;
    ' w$ }% o1 W# u
  3.   server_name  baidu.cncml.com;
    6 A' B- L+ J' U- r( P( n& R
  4.   index  index.php index.html index.htm;  \+ P/ H* k$ @" j$ y
  5. " B6 I5 n2 r& L2 J8 v/ F1 d
  6.   location / {. ^1 ]9 e+ M, H. I+ v) m
  7.     proxy_pass  http://www.baidu.com;
    7 d2 ~! x. e0 @8 g# b" S! N; V
  8.     proxy_set_header Host $proxy_host;
    $ M: d) p/ h! `: a7 r0 j5 _( B
  9.     proxy_set_header X-Real-IP $remote_addr;0 s: D; E; z5 a0 ]6 X3 j  `
  10.     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    ; @: O% X* T  S0 {; w
  11.   }1 |" V- u8 F  K
  12. }
复制代码
[size=0.6]这样访问 http://baidu.cncml.com 时就会转发到 http://www.baidu.com
本地一个端口转发到另一个端口或另一个域名
/ U8 J/ g3 ?, l/ @" E5 U& m
  1. server{/ K3 _4 J+ Y, q" Z9 f2 U+ d8 N5 l
  2.   listen 80;
    " K5 E; m7 n5 m* n
  3.   server_name 127.0.0.1; # 公网ip" Z3 G: i3 g% H3 X- B) M2 W
  4.   index  index.php index.html index.htm;' s6 N  r7 Y$ f2 @5 `
  5. . c4 c; p2 y1 C& B2 b
  6.   location / {
    " N+ M* ~/ f/ |, d; e
  7.     proxy_pass  http://127.0.0.1:8080; # 或 http://www.baidu.com4 c! m9 O* W( ?" s2 Q8 Z
  8.     proxy_set_header Host $proxy_host;$ K# W2 B6 a4 r; C
  9.     proxy_set_header X-Real-IP $remote_addr;
    ; f$ K7 A% D% q9 |. Y/ e$ }
  10.     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;/ b  e1 p/ ]  L- V5 V+ R
  11.   }( y  |9 h  ~4 h/ r) L
  12. }
复制代码
这样访问 http://127.0.0.1 时就会转发到本地的 8080 端口或 http://www.baidu.com: ]: ?6 P2 J0 y
+ O7 B6 R  O0 ?) y
加 / 与不加 /3 D5 ~- n# z& h' {7 z2 Q
在配置proxy_pass代理转发时,如果后面的url加/,表示绝对根路径;如果没有/,表示相对路径
5 C! v: R& a" \, V6 i5 `; p" f: \  W) Z. i$ m9 c1 I& W& T
例如
8 G, A! ~# j0 N9 M
6 F( J( \0 W6 _' ]加 /
& L9 B  f1 M  y: g& `  ?
  1. server_name cncml.com
    + ?- {/ I8 _8 `1 r
  2. location /data/ {
    3 `& P& w7 ~/ R2 ^& @
  3. proxy_pass http://127.0.0.1/;
    * h5 k, q0 m% P( H
  4. }
复制代码
访问 http://cncml.com/data/index.html 会转发到 http://127.0.0.1/index.html
' M2 G, u. g. f+ S% b) e
' e* I' N, W# I& F* O. {不加 /6 ^9 o! w1 M6 N. u/ P
  1. server_name cncml.com
    . u. m8 y' U& n& c* P
  2. location /data/ {
    1 \! V3 U: h4 L& I& F) ?; C% c9 O
  3. proxy_pass http://127.0.0.1;' P8 d  e; h6 h$ @% J& }0 L' [7 r! [
  4. }
复制代码
访问 http://cncml.com/data/index.html 会转发到 http://127.0.0.1/data/index.html
% u, k" e9 w/ O1 T
/ f3 k1 k, a3 a* b, w8 r/ q
游客,如果您要查看本帖隐藏内容请回复

+ d# z3 D/ ?* S, \7 u( i
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2026-4-30 20:51 , Processed in 0.059518 second(s), 19 queries .

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