目前我的 nginx 配置文件中有以下内容:
server {
listen 80;
return 301 https://$host$request_uri;
}
server {
listen 443;
server_name envy.zone;
ssl_certificate /etc/nginx/cert.crt;
ssl_certificate_key /etc/nginx/cert.key;
ssl on;
ssl_session_cache builtin:1000 shared:SSL:10m;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers HIGH:!aNULL:!eNULL:!EXPORT:!CAMELLIA:!DES:!MD5:!PSK:!RC4;
ssl_prefer_server_ciphers on;
ssl_client_certificate /etc/nginx/cloudflare.crt;
ssl_verify_client on;
location /
{
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_pass https://localhost:8081;
proxy_read_timeout 90;
proxy_redirect http://localhost:8080 https://envy.zone;
}
}
根据我当前的配置,nginx 配置为将每个 http 和 https 请求发送到 apache2。我只希望 php 文件反向代理到 apache2,并将请求的请求留给 nginx(例如 *.png 可以由 nginx 很好地处理)。我该怎么做?
答案1
首先,不确定为什么需要 nginx 后面的 apache。
现在,如果你不在 Apache 中进行重写来隐藏 PHP 扩展,只需像这样修改您的位置块:
location ~ \.php$ {
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-Proto $scheme;
X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass https://localhost:8081;
proxy_read_timeout 90;
proxy_redirect http://localhost:8080 https://envy.zone;
}
你就可以出发了。