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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2020-2-25 05:46:09 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
有时我们会使用一些java或node应用,但又不想让他们直接监听80端口,这时就需要用到端口转发9 x) V: `! a$ o) \: [7 C

' X# ^7 H) S3 G% [3 O3 C本文中,我们介绍Nginx如何做端口转发,还有各种转发规则$ @8 G/ x$ l2 ]. f! r8 g8 A
6 \- X8 f( Y; W" [- @: k" H
将域名转发到本地端口' z0 u9 j3 w3 {2 r/ G- G0 l
首先介绍最常用的,将域名转发到本地另一个端口上
1 R5 p6 \# x3 X4 o1 g
  1. server{  s7 p& W# [/ f+ X
  2.   listen 80;$ E6 [( [8 ~) J! X3 U+ [
  3.   server_name  tomcat.cncml.com;
    & q, ~" _& v7 f; p( }. ^
  4.   index  index.php index.html index.htm;
    7 E" P! d- M1 f% \

  5. 4 G( U% M5 N% y  a% [. k% l" c& k
  6.   location / {1 [. h5 _  W2 }4 h( f2 a0 o. {
  7.     proxy_pass  http://127.0.0.1:8080; # 转发规则6 S/ ]. A4 a- h5 Z
  8.     proxy_set_header Host $proxy_host; # 修改转发请求头,让8080端口的应用可以受到真实的请求
    & d( B; w3 Y5 R) T( S& X7 N0 |5 w
  9.     proxy_set_header X-Real-IP $remote_addr;) M+ ]- h1 H; a# K
  10.     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    0 X5 t: ^0 W4 H, e. a' }
  11.   }
    , x$ l* @; o: A+ e6 ?- k3 j8 t
  12. }
复制代码
这样访问 http://tomcat.cncml.com 时就会转发到本地的 8080 端口
) S3 |1 H% a  ~9 x+ c( L/ P" R( ~1 M0 Y: l3 L( S
将域名转发到另一个域名
  V# Y/ V- e5 H4 j0 q) |3 l
  1. server{
    # j7 [5 d8 U0 c7 n/ o4 z! W! s
  2.   listen 80;1 ~- r8 e- S$ h% S# Z+ a
  3.   server_name  baidu.cncml.com;5 N  O# x, S4 M0 S% z
  4.   index  index.php index.html index.htm;2 O1 V+ W* g8 I& q0 X

  5. . ~5 a# o. ^& d9 ?! y0 m
  6.   location / {$ m- o. z7 G: y) ]$ n# s
  7.     proxy_pass  http://www.baidu.com;
    & L* C9 u" h+ W9 @3 R, J' Q4 u
  8.     proxy_set_header Host $proxy_host;
    7 n2 L2 E9 @7 @  \( R  J+ G5 C
  9.     proxy_set_header X-Real-IP $remote_addr;
    3 ?2 E" L% p$ X# t
  10.     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    ) P! b1 b2 B2 R, t: ^; c5 [0 f
  11.   }
    0 u8 `2 g" D# B6 b' ?! d
  12. }
复制代码
[size=0.6]这样访问 http://baidu.cncml.com 时就会转发到 http://www.baidu.com
本地一个端口转发到另一个端口或另一个域名) {8 S1 `* t( w+ J& z$ H8 X
  1. server{
    4 C% Z. d, W& K  H
  2.   listen 80;
    ! H- f; u. [/ u: \0 s7 g
  3.   server_name 127.0.0.1; # 公网ip  p: y0 A* L, C6 j- i1 _
  4.   index  index.php index.html index.htm;
    + _0 c, B  q9 V

  5. 2 c! O- {9 D8 Q
  6.   location / {
    . j% O% `+ a3 E+ e- k( e; t
  7.     proxy_pass  http://127.0.0.1:8080; # 或 http://www.baidu.com
    5 V( \# M2 y2 |  U
  8.     proxy_set_header Host $proxy_host;
    6 m* \. E+ _8 q- H! C2 ~
  9.     proxy_set_header X-Real-IP $remote_addr;) s9 l$ A5 _! o
  10.     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    ' R0 D/ A/ n1 {
  11.   }" p+ y" d* \! [8 N5 L; _
  12. }
复制代码
这样访问 http://127.0.0.1 时就会转发到本地的 8080 端口或 http://www.baidu.com
9 a# b4 N$ s% j! p! A! V  b5 ?& r$ W2 `7 C& w$ }8 n) b) w
加 / 与不加 /
, j) {" T% t/ k! h) n, `+ C在配置proxy_pass代理转发时,如果后面的url加/,表示绝对根路径;如果没有/,表示相对路径
7 s9 h* Q, v2 H6 J- E% ^: V8 c, O1 O. [* b% i+ K7 f
例如3 h/ P: V' r1 ]
$ R) U' o! P0 u4 E
加 /3 N3 f: q. r- _- B9 t4 C
  1. server_name cncml.com
    ' U7 ]( O4 L3 ?8 T1 m7 \2 f
  2. location /data/ {& I/ P6 j; _/ A# S0 U- c
  3. proxy_pass http://127.0.0.1/;
    0 s# }9 t# v% b. N$ Z0 J
  4. }
复制代码
访问 http://cncml.com/data/index.html 会转发到 http://127.0.0.1/index.html& ]5 O9 o* [5 N# N2 ~
/ |# M% U0 F: T- ?  e
不加 /
& n" N( _/ E# M
  1. server_name cncml.com
    7 a( u- s0 R3 Z$ Y
  2. location /data/ {6 ^4 z1 L9 I1 Q' W, ]4 i6 O. s3 R; w
  3. proxy_pass http://127.0.0.1;
    5 J2 S3 _/ L( X! l- m6 o
  4. }
复制代码
访问 http://cncml.com/data/index.html 会转发到 http://127.0.0.1/data/index.html; s( f8 A( i) c
5 n: q; _# o. F8 J- E3 x
游客,如果您要查看本帖隐藏内容请回复

9 V$ F9 y4 [1 n( }  m4 G
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2024-5-19 15:52 , Processed in 0.123490 second(s), 19 queries .

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