nginx:将所有请求重定向到代理,但不包括这三个特定的 URL

nginx:将所有请求重定向到代理,但不包括这三个特定的 URL

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 重定向还不熟悉。)

多谢!

相关内容