我有一个小型静态子网站,例如
www.example.com/foo/
,我使用以下 nginx 配置:
server {
listen 443 ssl;
server_name example.com;
ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
location / {
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto https;
proxy_read_timeout 3600;
proxy_pass http://example-site/;
}
location /foo {
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto https;
proxy_read_timeout 3600;
proxy_pass http://example-web-foo/;
}
}
但是,当我在网站中使用一些基于根的 URI 时,例如
/assets/css/style.css
,它会转换为 https://example.com/assets/css/style.css
,而不是 https://example.com/foo/assets/css/style.css
。
有没有办法在代理中指定根?
我认为您可以通过使用
proxy_set_header
指令编辑 X-Forwarded-URI
标头来指定代理中的根!
看看这个:
server {
listen 443 ssl;
server_name example.com;
ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
location / {
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto https;
proxy_set_header X-Forwarded-URI $request_uri; # Add this line
proxy_read_timeout 3600;
proxy_pass http://example-site/;
}
location /foo {
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto https;
proxy_set_header X-Forwarded-URI $request_uri; # Add this line
proxy_read_timeout 3600;
proxy_pass http://example-web-foo/;
}
}