我知道这个问题已经asked before on SO,但我在服务器上复制它时遇到了麻烦。
我要做的是当用户转到medicine.example.com
时,子域应该映射到example.com/sites/medicine
。因此,用户看到的网址是medicine.example.com
。
index.php通过PHP剥离。
以下代码给出了502 bad gateway
错误。
server {
listen 80;
listen 443 ssl;
server_name medicine.example.com;
location / {
rewrite ^([^.]*[^/])$ $1/ permanent;
proxy_pass_header Set-Cookie;
proxy_pass https://example.com/sites$request_uri;
}
}
理想情况下,解决方案是基于通配符/正则表达式,以便不仅可以映射medicine.example.com
。想法?
答案 0 :(得分:0)
我相信如果您希望浏览器中的URL保持不变,则无需进行重写。所以你只需要这个(@Jack在$ uri前面有一个额外的/。)
$ scheme应该返回http或https,具体取决于用户输入的内容
server {
listen 80;
listen 443 ssl;
server_name medicine.example.com;
location / {
proxy_pass $scheme://example.com/sites/medicine$request_uri
}
这是$ uri与$ request_uri的链接。基本上$ uri不包括参数。 http://wiki.nginx.org/HttpCoreModule#.24request_uri
答案 1 :(得分:0)
额外路径将自动转发到上游服务器。所以不需要附上$ request_uri。 Nginx很简单。
location / {
proxy_pass http://example.com/sites/medicine
}
[edit]也不需要为上游服务器使用https,因为它浪费了ssl协商的资源。使用http更好,因为您的上游服务器是内部的。交通安全。