nginx 有时候会比较棘手:
我想要
- 将所有传入请求重定向
www.sub.domain.com/*
至www.other.domain.com/*
- 使用代理,以便用户
www.sub.domain.com
在浏览网站时仍能看到原始内容 - 为特定 URL(所有相同类型)添加例外:
www.sub.domain.com/script
需要重定向到www.yet.another.domain.com/www.sub.domain.com/new_script
,为脚本保留输入的 POST 数据。小技巧在于,包含的文件夹new_script
以原始域命名。
以下是我目前得到的信息:
server { listen xx.xx.xx.xx:80; root /var/www; index index.html index.htm; server_name www.sub.domain.com;
location /cms/ {
proxy_pass http://yy.yy.yy.yy:8080;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
}
location /script {
proxy_pass http://www.yet.another.domain.com/www.sub.domain.com/;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
}
location / {
proxy_pass http://yy.yy.yy.yy:8080;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
rewrite ^/int/a.([a-zA-Z]+).([0-9]+)$ /site/int/a?l=$1&i=$2 last;
rewrite ^(.*)$ /site/$1 last;
}
}
在访问时www.sub.domain.com/script
,会发生以下情况:
curl -I www.sub.domain.com/script HTTP/1.1 301 Moved Permanently Server: nginx/1.6.0 Date: Mon, 04 Aug 2014 04:12:23 GMT Content-Type: text/html Content-Length: 184 Location: http://www.sub.domain.com/script/
Connection: keep-alive
此外,还显示 404 错误:“未找到:此服务器上未找到所请求的 URL /www.sub.domain.com/。”
我的错误在哪里?我没发现。(或者说是一堆错误?我对 nginx 重定向还不熟悉。)
多谢!