使用Nginx托管Docusaurus v2

tgabmvqs  于 2023-04-29  发布在  Nginx
关注(0)|答案(2)|浏览(251)

我尝试使用nginx作为反向代理,在Google AppEngine上托管Docusaurus v2。GooglAppEngine已启用HTTPS。Nginx监听端口8080。因此,默认情况下,所有请求都是通过HTTPS和Google AppEngine管理的连接。
但是,当用户执行以下操作时,我遇到了问题:

  • 到达着陆页
  • 转到文档(任何页面)。
  • 刷新页面。

用户被定向到端口8080,而不是docusaurus的https站点。
无需刷新页面,用户就能够成功地导航站点。当用户点击刷新按钮时,他们会得到重定向。查看头信息,我看到响应将它们指向端口8080,但我不确定为什么会发生这种情况。
想知道是否有人成功地使用nginx设置了Docusaurus v2?
我的nginx配置如下:

events {
    worker_connections 768;
}

http {
    sendfile on;
    tcp_nopush on;
    tcp_nodelay on;
    keepalive_timeout 65;
    types_hash_max_size 2048;
    include /etc/nginx/mime.types;
    default_type application/octet-stream;

    # Logs will appear on the Google Developer's Console when logged to this
    # directory.
    access_log /var/log/app_engine/app.log;
    error_log /var/log/app_engine/app.log;

    gzip on;
    gzip_disable "msie6";

    server {
        # Google App Engine expects the runtime to serve HTTP traffic from
        # port 8080.
        listen 8080;
        root /usr/share/nginx/www;
        index index.html index.htm;
        location / {
        if ($http_x_forwarded_proto = "http") {
        return 301 https://$server_name$request_uri;
            }
        }
        

    }
lb3vh1jj

lb3vh1jj1#

这可能是由于docusaurus网站链接到没有尾随斜杠/的目录,导致默认设置为包括端口的重定向。
查看docusaurus构建目录,您将看到页面被定义为包含索引的文件夹。如果没有/,服务器需要重定向到{page}/index.html
尝试调用带有/且没有端口的URL,应该会成功:

https://{host}/docs/{page}/

因此,要解决此问题,您可以尝试更改重定向规则,使其不包含带有port_in_redirect参数的端口:

server {
    listen 8080;
    port_in_redirect off;
    
    # More configuration
    ...
}

有关详细信息,请参阅文档。

9gm1akwq

9gm1akwq2#

要解决“转到文档(任意页面)”和“刷新页面”问题,您可以用途:

location / {
    ...
    try_files $uri /index.html;
    ...
}

相关问题