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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2020-2-25 05:46:09 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
有时我们会使用一些java或node应用,但又不想让他们直接监听80端口,这时就需要用到端口转发
" p3 |" o. g( r0 x% r* j0 e9 P( b$ Y* }, [% b; u/ G8 u8 \/ m
本文中,我们介绍Nginx如何做端口转发,还有各种转发规则
$ G) W) ]0 l0 P! U6 K
% k0 H4 s+ v: t7 u: H! `" I2 R  P0 X将域名转发到本地端口- a8 N2 ?0 v5 P5 F: P, p9 h' F
首先介绍最常用的,将域名转发到本地另一个端口上9 c3 f: k! ^8 I3 ^8 t
  1. server{3 C; O8 F: L0 T' u
  2.   listen 80;
    7 V: [4 A! K5 _5 ~/ W) r
  3.   server_name  tomcat.cncml.com;8 A' [% ^! R: g! ?4 u9 h
  4.   index  index.php index.html index.htm;
    9 N/ Y' Q1 I4 s# s

  5. 3 ?7 O' E6 m- j. m) Q
  6.   location / {
    7 E5 c$ W7 Z) F9 @+ ?
  7.     proxy_pass  http://127.0.0.1:8080; # 转发规则: v# n/ m7 D. ^+ t- r) Z3 ]0 h
  8.     proxy_set_header Host $proxy_host; # 修改转发请求头,让8080端口的应用可以受到真实的请求% D" F) u& P  f$ d% B3 Y' Z- {$ h! p" Y
  9.     proxy_set_header X-Real-IP $remote_addr;  ~: D( Y! X' k$ a3 L
  10.     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;7 K( F3 Q: T9 m4 k/ [0 O
  11.   }; q8 p! x3 Q9 u$ Q* I
  12. }
复制代码
这样访问 http://tomcat.cncml.com 时就会转发到本地的 8080 端口* ?3 f* x' i0 d
  e7 U* {5 f1 I; i/ f- f
将域名转发到另一个域名
, O( d" b8 ?  L! E# E* l
  1. server{( T( |, Z+ p& c* _9 P# t7 R. D7 F
  2.   listen 80;
    # [& x: ~, C* P3 i" o& U
  3.   server_name  baidu.cncml.com;
    4 l. h- b" v/ Q( Z9 G% V# t
  4.   index  index.php index.html index.htm;
    ) j4 V. Q1 ]+ W; w' u
  5. : r5 ^, ]; J$ G3 m
  6.   location / {
    4 s3 G/ l$ s, p' w
  7.     proxy_pass  http://www.baidu.com;
    ( j! s' H- L7 y' v" _" _
  8.     proxy_set_header Host $proxy_host;
    / F9 e% \' M( c
  9.     proxy_set_header X-Real-IP $remote_addr;
    6 M$ E6 M& @$ y. B- e; D) E2 N8 X! [
  10.     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;+ _% K/ o: C1 {" C! k" |; [" N1 e
  11.   }+ T0 y0 ]9 H$ ?8 C
  12. }
复制代码
[size=0.6]这样访问 http://baidu.cncml.com 时就会转发到 http://www.baidu.com
本地一个端口转发到另一个端口或另一个域名4 G2 h; d0 X; ~& y. h: `) L: H+ G
  1. server{
    & L# ^4 b6 y' u$ i
  2.   listen 80;4 F7 u: H& q4 Y5 X* M
  3.   server_name 127.0.0.1; # 公网ip$ I1 O; V- V7 K. s2 i
  4.   index  index.php index.html index.htm;
    , O! N$ C7 Y- a& S8 I$ }& X
  5. % B4 }3 E# N  @5 ?8 X! M9 T
  6.   location / {
    . _  `, p, J4 h& {
  7.     proxy_pass  http://127.0.0.1:8080; # 或 http://www.baidu.com! j6 M+ P0 g- Z$ F% U- T. L1 h
  8.     proxy_set_header Host $proxy_host;
    , v: B* M, Y7 j0 v4 D% W/ G
  9.     proxy_set_header X-Real-IP $remote_addr;- X- w5 k* s3 x" v& U9 v. s
  10.     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;, M) z- |8 @+ U. m2 {
  11.   }7 F1 j# ]; Y1 c5 Y+ b0 x  p( h
  12. }
复制代码
这样访问 http://127.0.0.1 时就会转发到本地的 8080 端口或 http://www.baidu.com: J  _! I1 M2 s0 P

% B. J0 v3 T/ G/ Y5 \8 B加 / 与不加 /
/ `9 C3 Q8 n  z8 ]6 T在配置proxy_pass代理转发时,如果后面的url加/,表示绝对根路径;如果没有/,表示相对路径" q' Z2 i- U/ n& e
7 Y2 T( P5 W0 A
例如/ ~2 X8 `; I/ j. y
# `; d- j# u9 N3 j& @) G: t
加 /
$ D( x, x5 |# h- K% D
  1. server_name cncml.com
    ( |9 Z" X0 K% N2 A/ f, s9 N
  2. location /data/ {, ]' W' u9 k# N' B
  3. proxy_pass http://127.0.0.1/;" [7 q1 v7 J  T" `% g( z
  4. }
复制代码
访问 http://cncml.com/data/index.html 会转发到 http://127.0.0.1/index.html9 v* G4 P: m, j6 `2 Z/ j
* l4 U$ B5 B: h8 y$ p* b- ^! E
不加 /
0 r5 Y* ~' s$ H$ P3 G2 |1 |
  1. server_name cncml.com/ M5 c( g  r) g5 ]1 h0 B5 I. D
  2. location /data/ {
    7 V, @: _$ F: O7 j
  3. proxy_pass http://127.0.0.1;- ^- W8 E* d# m* b7 d, ?
  4. }
复制代码
访问 http://cncml.com/data/index.html 会转发到 http://127.0.0.1/data/index.html. \; ?& V7 J# O$ X

# d. h9 r, [% v8 I& N
游客,如果您要查看本帖隐藏内容请回复

$ K" l" A' N' b) I  p: R7 [
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2024-12-21 23:42 , Processed in 0.146272 second(s), 22 queries .

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