我有一个工作的Apache虚拟主机,如
<VirtualHost localhost:10006> DocumentRoot "/home/pate/***/git/kohana_site/public/site/" </VirtualHost> <VirtualHost *:10006> ServerName api.* DocumentRoot "/home/pate/***/git/kohana_site/public/api/" LogLevel debug </VirtualHost>
如果我指向本地主机:10006我得到我的网站和api.localhost:10006我得到我的API。
然后我有haproxy安装在上面,运行在端口10010和localhost:10010和api.localhost:10010都有预期的行为。
现在我已经在这个configuration的端口80上设置了nginx。
server { listen 10000; server_name api.*; location / { proxy_pass http://legacy_server; } } server { listen 10000 default; server_name _; location /nginx_status { stub_status on; access_log off; } # images are accessed via the CDN over HTTP (not https) location /n/image { proxy_pass http://image_caching_server; } location / { return 301 https://$host:10014$request_uri; } } upstream legacy_server { server localhost:10010 fail_timeout=0; }
问题是,apache不能正确识别虚拟主机,并将api.localhostredirect到网站而不是api。
我试着玩set_proxy_header Host $主机,但似乎没有做任何事情。
你可以尝试将这些标签添加到位置块:
proxy_set_header主机$主机;
proxy_set_header X-Real-IP $ remote_addr;
proxy_set_header X-Forwarded-For $ proxy_add_x_forwarded_for;
重新启动nginx并尝试是否有效