我们这里以简单的案例来对Nginx的反向代理实现进行解析,这里的Nginx配置作用为:拦截来自某个路径的信息请求,去除广告请求API。
Nginx的具体配置规范和入门参见:
1 | server { |
配置中有几个需要用户自行修改的地方:
1 | listen [Nginx_port] ssl http2; |
Nginx监听的端口,该端口是Nginx服务工作的端口,和实际服务的端口不能是同一个,也不是能使任何服务已经占用的端口。使用反向代理后,被代理的服务将会在本端口继续提供服务。
假如需要被反向代理的服务开启了HTTPS服务,那这里就需要使用
ssl http2写法,假如没有域名使用IP:PORT的形式提供服务,则不用写ssl https, 直接写:listen 8080;即可,其中端口号可以自行设置,不必非要是8080.
1 | ssl_certificate [/root/SITE_ADDR/fullchain.pem]; |
在这两段需要配置ssl证书的路径,包括公钥和私钥,而且全部要使用绝对路径
1 | location = [/LOCATION_ADDR/sponsors] { |
这里是使用location确认Nginx需要处理的对象路径,使用
=指的是要精准匹配等于号后面的服务路径。和下面是用头匹配作用范围不同。
1 | location ^~ [/LOCATION_ADDR/sponsors/] { |
这里使用正则表达式进行泛匹配,策略性匹配
1 | `=` 精确匹配(最高) |
使用
^~就是匹配任何以/LOCATION_ADDR/sponsors/开头的服务,比如:
/LOCATION_ADDR/sponsors/index.html/LOCATION_ADDR/sponsors/service.php/LOCATION_ADDR/sponsors/site.htnl/LOCATION_ADDR/sponsors/index/index.html
命中该匹配规则的服务按预设的逻辑进行处理。
1 | [proxy_pass https://127.0.0.1:port]; # 服务是 SSL 的,所以是 https;端口后不要加任何路径 |
原始服务在公网暴漏的地址为:
https://127.0.0.1:port开头, 表示Nginx将要使用https://example.com:Nginx_port来代替https://127.0.0.1:port端口所在的服务,在服务器将https://127.0.0.1:port监听的范围从0.0.0.0改为127.0.0.1就可以将原始服务的可访问范围从所有设备限制为局域网访问,同时Nginx将对内网提供的服务通过反向代理映射到公网来代替原始服务地址。