nginx:当我们重定向

时间:2017-01-12 18:40:04

标签: nginx

标题有点误导,但我无法想到更好的标题。

我在CloudFront背后托管了一个nginx服务器。可以在origin.website.com访问nginx服务器,这是CloudFront的来源。 CloudFront分发版位于website.com

有没有办法让我们每次重定向时都会重定向到website.com/$uri而不是origin.website.com/$uri

我试图覆盖我的所有基地,但我确实有一个特定的问题:

server {
        listen       80 default_server;
        listen       [::]:80 default_server;
        server_name  origin.website.com website.com;
        add_header X-server-choice "default";
        add_header X-heard-uri "$uri";

        root /var/www;
        client_max_body_size 200M;

        # Load configuration files for the default server block.
        include /etc/nginx/default.d/*.conf;

        location / {
                proxy_pass http://localhost:8080;
                proxy_http_version 1.1;
                proxy_set_header Upgrade $http_upgrade;
                proxy_set_header Connection 'upgrade';
                proxy_set_header Host $host;
                proxy_cache_bypass $http_upgrade;
        }
        location /blog {
                alias /var/www/blog;
                index index.php;
                try_files $uri $uri/ @site_rewrite;
        }

        location @site_rewrite {
                rewrite ^/blog/(.*)$ /blog/index.php?$1;
        }

        location ~ \.php$ {
                fastcgi_pass   127.0.0.1:9000;
                fastcgi_index  index.php;
                fastcgi_param  SCRIPT_FILENAME  /var/www/$fastcgi_script_name;
                include        fastcgi_params;
        }

        location ~ /\.ht {
                deny  all;
        }

}

每当我转到website.com/blog时,它都会重定向到origin.website.com/blog/。它似乎正在通过location /blog并在try_files $uri $uri/ @site_rewrite中重定向而不通过site_rewrite

有什么想法吗?谢谢!

1 个答案:

答案 0 :(得分:1)

我认为你可以为重写目标设置一个完整的URL,即

rewrite ^/blog/(.*)$ $scheme://website.com/blog/index.php?$1 redirect;