Nginx通过反向代理实现单端口访问多个服务

本文介绍了反向代理的概念,通过一个例子展示了如何利用Nginx配置反向代理,将不同域名映射到内部网络的不同服务,提升用户体验,避免直接暴露服务端口。配置中涉及upstream、proxy_pass等关键设置,使得www.liumou.site和file.liumou.site分别对应网站服务和文件服务。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、什么是反向代理:

反向代理服务器架设在服务器端,通过缓冲经常被请求的页面来缓解服务器的工作量,将客户机请求转发给内部网络上的目标服务器;并将从服务器上得到的结果返回给Internet上请求连接的客户端,此时代理服务器与目标主机一起对外表现为一个服务器。

2、举个例子

假设服务器共有两个服务,一个是网站服务,一个是http文件分发服务器,其中这两个服务在内部开启的端口是:

  • 网站服务:82
  • 文件服务: 81

域名是:
liumou.site

所以在不配置代理的情况下,需要访问的方法是:

  • 网站服务:http://liumou.site:82
  • 文件服务: http://liumou.site:81

可以看到,如果这样子访问的话,有着很不好的体验,因为要加端口才能访问,所以这时候就可以通过反向代理来实现不同的域名访问不同的服务,且访问的端口都是80

3、开始配置

3.1、预设信息

为了更好的访问体验,我这边设置了两个域名记录来访问不同的服务,如下

  • http://www.liumou.site -> http://liumou.site:82
  • http://file.liumou.site -> http://liumou.site:81

所有域名记录均指向同一个服务IP

3.2、配置修改

编辑配置文件/etc/nginx/conf.d/defalut.conf

upstream file {
 server 127.0.0.1:81;
}
upstream www {
 server 127.0.0.1:82;
}

server {
   listen 80;
   server_name file.liumou.site;
   client_max_body_size 1024m;
   location / {
	     proxy_pass http://file;
	     proxy_set_header HOST $host;
	     proxy_set_header X-Forwarded-Proto $scheme;
	     proxy_set_header X-Real-IP $remote_addr;
	     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
   }
}

server {
  listen 80;
  listen [::]:80;
  server_name www.liumou.site;
  client_max_body_size 1024m;
  location / {
    proxy_pass https://www;
    proxy_set_header HOST $host;
    proxy_set_header X-Forwarded-Proto $scheme;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  }
}
}

参数解释

  • proxy_pass http://file; 设置需要访问的最终服务器地址,其中file是上面的upstream函数定义的名称
  • server_name www.liumou.site; 设置请求的url地址,当匹配正确则应用访问规则
  • server_name file.liumou.site; 设置请求的url地址,当匹配正确则应用访问规则
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

坐公交也用券

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值