我不是技术
PHP成长
ARTICLE
linux相关
ARTICLE
其他类别
ARTICLE
文章
> 公网服务器安装nps代理内网web应用[https篇]
00:00
2022/04/07
3277
公网服务器安装nps代理内网web应用[https篇]
自从上次获取真实ip成功后,发现用https的时候遇到一些问题,如果用nps处理ssl的话,我按照文档说明配置了,但是会发现网页打不开,而如果nps只转发https流量,内网服务器处理ssl的话,获取的ip仍然是内网客户端的ip,这个问题也是折磨了我很久,百度也没有个所以然,可能用nps 的人都没有这个需求吧。 在今天无意间灵光咋现,既然nps可以只转发https不处理ssl,为何我不用Nginx先处理了再让nps转发?所以就在公网服务器上装了Nginx,一样的需要打开`--with-http_realip_module`这个模块,然后根据官方文档,nps配合Nginx ```shell #如需使用https也可在nginx监听443端口并配置ssl,并将本代理的httpsProxyPort设置为空关闭https server { listen 443; server_name *.proxy.com; ssl on; ssl_certificate certificate.crt; ssl_certificate_key private.key; ssl_session_timeout 5m; ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4; ssl_protocols TLSv1 TLSv1.1 TLSv1.2; ssl_prefer_server_ciphers on; location / { proxy_set_header Host $http_host; proxy_pass http://127.0.0.1:8020; #这里是nps设置的http端口 } } ``` 这样设置后,客户端配置文件不能设置内网端口为443,不然会一直重定向。这样就能够正常访问网站了,但是获取到的ip依然只是内网客户端的ip,是因为公网服务器Nginx需要添加客户端ip ```shell location / { proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Host $http_host; proxy_pass http://127.0.0.1:8020; } ``` 然后内网服务器添加这段 ```shell set_real_ip_from 192.168.4.0/24; set_real_ip_from 127.0.0.1; real_ip_header X-Forwarded-For; real_ip_recursive on; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; ``` 这个时候获取到的ip就不再是内网客户端ip了