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
地址,当匹配正确则应用访问规则
推荐
upstream file {
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;
}
}
为了避免管理混乱,建议一个配置文件写一个配置即可