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;
   }
}

为了避免管理混乱,建议一个配置文件写一个配置即可