标题有点误导,但我无法想到更好的标题。
我在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
。
有什么想法吗?谢谢!
答案 0 :(得分:1)
我认为你可以为重写目标设置一个完整的URL,即
rewrite ^/blog/(.*)$ $scheme://website.com/blog/index.php?$1 redirect;