将静态站点根目录保留在子目录中(反向代理)

问题描述 投票:0回答:1

我有一个小型静态子网站,例如

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

有没有办法在代理中指定根?

nginx reverse-proxy nginx-reverse-proxy
1个回答
0
投票

我认为您可以通过使用

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/;
  }
}
© www.soinside.com 2019 - 2024. All rights reserved.