Jan*_*mer 3 nginx hostname apache-2.2
我遇到了多个网站共享一个 IP 地址的情况。我让 nginx 接受请求并将它们传递给实际上为站点提供服务的 Apache。我知道这里并不真正需要 Apache,但由于历史原因,它是这样设置的,如果不需要,我宁愿不更改它。
事情的设置方式,nginx 接受对 example.com 的请求并将其传递给 Apache,如下所示:
server {
listen 80;
server_name example.com www.example.com;
access_log /var/log/nginx/example.log;
error_log /var/log/nginx/example.log;
location / {
proxy_read_timeout 120;
proxy_set_header X-Real-IP $remote_addr;
proxy_pass http://localhost:8100;
}
}
Run Code Online (Sandbox Code Playgroud)
在 httpd.conf 中,我们有
<VirtualHost localhost:8100>
ServerName www.example.com
ServerAlias example.com
Options Indexes
DocumentRoot /export/sites/example/live
ServerAdmin info@example.net
</VirtualHost>
Run Code Online (Sandbox Code Playgroud)
到目前为止,一切都运行良好,但我已经向站点添加了一个 PHP 脚本(不是我自己的),但它无法获得正确的主机名。$_SERVER["HTTP_HOST"] 和/或 $_SERVER['SERVER_NAME'] 正在返回 localhost:8100 而不是 example.com。
是否可以进行设置以便 PHP 获得正确的主机名?
默认情况下,它从proxy_pass线路发送主机规范。您可以通过在其中抛出此配置来覆盖它,强制Host:标头包含与客户端发送的相同:
proxy_set_header Host $host;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2146 次 |
| 最近记录: |