比如说我有这样的 nginx 代理设置:
server {
listen 443 ssl;
server_name foo.com;
#SSL and logging settings omitted
location /datapath1 {
proxy_read_timeout 3500;
proxy_connect_timeout 3250;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Host $http_host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-NginX-Proxy true;
proxy_pass http://localhost:12345/;
}
location /datapath2 {
proxy_read_timeout 3500;
proxy_connect_timeout 3250;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Host $http_host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-NginX-Proxy true;
proxy_pass http://localhost:23456/;
}
}
其思想是,当该服务器接收到对不同数据路径的 POST 请求时,数据包将被解密并发送到在同一台机器上运行的程序,然后由程序生成响应,然后由 nginx 加密并发送回客户端。
我知道我可以将 HTTPS 数据包直接发送到程序正在监听的端口……但我更喜欢这种方法,因为它隐藏了端口,而且我不需要在程序中处理缓存和 SSL,只需让 nginx 处理它们。另外,我或多或少必须使用代理服务器……所以我想探索这种可能性。
这到底有没有用呢?