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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2020-2-25 05:46:09 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
有时我们会使用一些java或node应用,但又不想让他们直接监听80端口,这时就需要用到端口转发
/ x9 i; b0 q/ e7 `/ x+ N2 L6 R( \$ H( S9 q9 {
本文中,我们介绍Nginx如何做端口转发,还有各种转发规则
. M9 L- F* L# H/ i, q7 \
3 q1 N$ t) z. @0 w将域名转发到本地端口
1 [; t: _# b1 \  @; \8 B7 j% l首先介绍最常用的,将域名转发到本地另一个端口上
8 T! E8 q' s/ U" e1 n
  1. server{
    8 j$ z# d; a! K; o8 y$ b
  2.   listen 80;: o1 D, ^$ p- N! h  U
  3.   server_name  tomcat.cncml.com;! \! N( i. J8 s2 B/ o: H( t
  4.   index  index.php index.html index.htm;
    6 L  p" S* x+ f/ y% u

  5. & i4 t5 u/ t8 P. A+ w& i
  6.   location / {
    & x1 B  H1 J5 |3 A# F# i2 {; V% H
  7.     proxy_pass  http://127.0.0.1:8080; # 转发规则
    + d7 T6 @# X) k# E% g5 b8 \- W3 E, v
  8.     proxy_set_header Host $proxy_host; # 修改转发请求头,让8080端口的应用可以受到真实的请求
    " ?: u! q  e8 [! @
  9.     proxy_set_header X-Real-IP $remote_addr;0 y, ~) R6 C& U# q0 n/ F
  10.     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    5 v' U" e2 I! b4 J' H
  11.   }( A( D3 h' H$ p: I4 k. `1 Q7 c+ y
  12. }
复制代码
这样访问 http://tomcat.cncml.com 时就会转发到本地的 8080 端口& k: @) d/ N. L" L* s

8 a. O( C% q3 E( y* G2 y将域名转发到另一个域名
2 j6 O1 u7 y; ^' B
  1. server{
    ( C( r5 H+ J  O5 \
  2.   listen 80;
    : f9 P: a$ c2 E# d& g* Z' m- d
  3.   server_name  baidu.cncml.com;7 x- ^. J. n" m' G% Q& r1 U
  4.   index  index.php index.html index.htm;
    ' a- X* n6 U0 k8 B

  5. * E  N1 s4 p% v6 m, J
  6.   location / {
      Z4 N4 }! O$ `
  7.     proxy_pass  http://www.baidu.com;! Z! `3 E/ ^, {2 `% G: P* \
  8.     proxy_set_header Host $proxy_host;/ t8 R# s  {7 B/ M; `. f( H
  9.     proxy_set_header X-Real-IP $remote_addr;
    . v0 S' s6 T, W! c! }; j* @& z* T9 z
  10.     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    ; o; C3 w7 \& f( m8 s6 b
  11.   }9 F  M6 ^* j5 `: h8 q. t/ ^
  12. }
复制代码
[size=0.6]这样访问 http://baidu.cncml.com 时就会转发到 http://www.baidu.com
本地一个端口转发到另一个端口或另一个域名( t+ s* R0 j# B. h. B
  1. server{
    & {4 ]0 |" x1 g4 x; F. f1 F: j
  2.   listen 80;# U) ^# ~- g, B" [
  3.   server_name 127.0.0.1; # 公网ip' c& b( B2 ]! {9 H% U
  4.   index  index.php index.html index.htm;
    8 d/ N* ?- V" @) U9 u; R

  5. 7 j/ ^% \- K  |3 O
  6.   location / {
    4 {, G0 j. p. y9 Z" l
  7.     proxy_pass  http://127.0.0.1:8080; # 或 http://www.baidu.com
    + Q. I% g0 Q$ X5 r) {$ \
  8.     proxy_set_header Host $proxy_host;
    ( m9 P, @1 V3 {& k
  9.     proxy_set_header X-Real-IP $remote_addr;: |6 G: d" ~) e
  10.     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;: ^" }+ w+ Y( F2 P( z" K
  11.   }7 e% f8 c7 V- Y% m! e  Y1 ?
  12. }
复制代码
这样访问 http://127.0.0.1 时就会转发到本地的 8080 端口或 http://www.baidu.com
3 F  `) n6 O0 S' \+ [9 J! Q9 s% T% P+ ~! q# |! m0 H( N" e& A
加 / 与不加 /
* A/ Y1 Q" h. |. Y. I, `9 l5 P& K在配置proxy_pass代理转发时,如果后面的url加/,表示绝对根路径;如果没有/,表示相对路径: ~2 K( d! |" d  o
' p% J" K- K+ N- L* }
例如
1 f4 H6 u3 I3 g% E) ]4 j! J: L: O. ]3 T6 O
加 /
6 g# x! R2 S. S5 b- u% D; a/ i
  1. server_name cncml.com5 ^3 L  D1 a3 t0 a7 _: E" _
  2. location /data/ {4 R2 s  K# x4 Y' n# _
  3. proxy_pass http://127.0.0.1/;/ ]! f9 b0 N- b; l0 S
  4. }
复制代码
访问 http://cncml.com/data/index.html 会转发到 http://127.0.0.1/index.html+ W6 q) T" M; I" P6 f

: k5 ^4 M( H& l* [不加 /
! N1 [6 o# Q" E9 v* h
  1. server_name cncml.com8 R' t- E" i$ D, |
  2. location /data/ {, |- P8 Q- c, S5 f5 I" }
  3. proxy_pass http://127.0.0.1;
    3 k. ~! G. O6 _, ^8 s4 p. o
  4. }
复制代码
访问 http://cncml.com/data/index.html 会转发到 http://127.0.0.1/data/index.html& R- j0 ?7 e+ R' }: p

3 R, v$ a) {( X: C' Y, N2 p
游客,如果您要查看本帖隐藏内容请回复

0 Q- Z2 T8 F% ?) p. d
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2026-3-16 18:13 , Processed in 0.050449 second(s), 20 queries .

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