Par*_*roX 5 php proxy nginx nginx-reverse-proxy
我有一台服务器,我想将其设置为负载平衡器/反向代理。
在 debian 10 上运行的 nginx/1.14.2
我根本不想缓存,我只是希望当人们访问负载平衡 nginx 服务器时,它将 TCP 直接发送到后端服务器(基于 nginx 的 ip 哈希算法),就像他们最初连接到它一样。
我还想在这个负载均衡器之上使用 cloudflare 作为它的 CDN 和缓存。
这是我目前的设置:
upstream backend {
ip_hash;
server node1.example.com;
server node2.example.com;
keepalive 100;
}
server {
listen 80;
listen [::]:80;
access_log off;
location / {
proxy_http_version 1.1;
proxy_set_header Host $http_host;
real_ip_header X-Forwarded-For;
proxy_pass http://backend;
proxy_redirect off;
proxy_request_buffering off;
proxy_buffering off;
}
}
Run Code Online (Sandbox Code Playgroud)
所有节点和负载均衡器在他们的 conf.d/ 中都有这个(来自 cloudflare 对 nginx 的推荐)
set_real_ip_from 103.21.244.0/22;
set_real_ip_from 103.22.200.0/22;
set_real_ip_from 103.31.4.0/22;
set_real_ip_from 104.16.0.0/12;
set_real_ip_from 108.162.192.0/18;
set_real_ip_from 131.0.72.0/22;
set_real_ip_from 141.101.64.0/18;
set_real_ip_from 162.158.0.0/15;
set_real_ip_from 172.64.0.0/13;
set_real_ip_from 173.245.48.0/20;
set_real_ip_from 188.114.96.0/20;
set_real_ip_from 190.93.240.0/20;
set_real_ip_from 197.234.240.0/22;
set_real_ip_from 198.41.128.0/17;
set_real_ip_from 2400:cb00::/32;
set_real_ip_from 2606:4700::/32;
set_real_ip_from 2803:f800::/32;
set_real_ip_from 2405:b500::/32;
set_real_ip_from 2405:8100::/32;
set_real_ip_from 2c0f:f248::/32;
set_real_ip_from 2a06:98c0::/29;
real_ip_header CF-Connecting-IP;
Run Code Online (Sandbox Code Playgroud)
CF-Connecting-IP 设置为客户端的 Ip,这似乎工作正常。
PHP 服务器正在运行node1.example.com或node2.example.com当前正在报告以下内容,其中 (abcd) 是负载均衡器 IP,(wxyz) 是连接客户端的 IP
["REMOTE_ADDR"]=> "a.b.c.d"
["HTTP_X_FORWARDED_FOR"]=> "w.x.y.z"
Run Code Online (Sandbox Code Playgroud)
我认为real_ip_header X-Forwarded-For;会使用 HTTP_X_FORWARDED_FOR(来自 cloudflare)并将其存储为真实 IP,这样 php 就会说 REMOTE_ADDR 与 HTTP_X_FORWARDED_FOR 相同
所以这就是我想要的
["REMOTE_ADDR"]=> "w.x.y.z"
["HTTP_X_FORWARDED_FOR"]=> "w.x.y.z"
Run Code Online (Sandbox Code Playgroud)
我怎样才能做到这一点?
负载均衡器正在添加请求 HTTP 标头CACHE_CONTROL: max-age=0
这是正确的吗?如果没有,我怎么能让负载均衡器使用 CACHE_CONTROL cloudflare 发送的任何内容
负载均衡器正在发出请求 HTTP 标头,CONNECTION: closed 但如果我访问后端,我总是得到CONNECTION: keep-alive 这是正确的吗?我在负载均衡器上设置了 keepalive 但它似乎总是关闭
| 归档时间: |
|
| 查看次数: |
372 次 |
| 最近记录: |