nginxリバースプロキシ+静的ファイル

nginxリバースプロキシ+静的ファイル

私はnginxのリバースプロキシの後にWordPressを提供しています。別のルートディレクトリにある静的ページを提供したいと思います。

私はこれを試しました:

server {
    listen            80;
    listen       [::]:80;
    server_name ${NGINX_HOST};
    root /static-pages;
    sendfile          on;
    tcp_nodelay       on;

    location / {
        try_files $uri $uri/ /static-pages/ =404;
        #try_files $uri $uri/ =404;
        #try_files /static-pages $uri/ =404;
        proxy_read_timeout    90;
        proxy_connect_timeout 90;
        proxy_redirect        off;
        proxy_pass http://wordpress;

        proxy_set_header      X-Real-IP $remote_addr;
        proxy_set_header      X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header      Host $http_host;
        proxy_set_header X-Forwarded-Proto $scheme;

    }
}

WordPressが正常に実行されていますが、静的ページの1つにアクセスしようとすると、404が表示されます。もちろん、location各静的ページにディレクティブを追加することもできますが、これはオーバーヘッドのように見えます。動作させることができますか?

関連があると考えられるデバッグログの一部は次のとおりです。

[debug] 7#7: *2 generic phase: 12
[debug] 7#7: *2 try files handler
[debug] 7#7: *2 http script var: "/marketing-analyst"
[debug] 7#7: *2 trying to use file: "/marketing-analyst" "/static-pages/marketing-analyst"
[debug] 7#7: *2 http script var: "/marketing-analyst"
[debug] 7#7: *2 trying to use dir: "/marketing-analyst" "/static-pages/marketing-analyst"
[debug] 7#7: *2 try file uri: "/marketing-analyst"

ディレクトリは間違いなく/static-pages/marketing-analyst存在します。

ベストアンサー1

作業ソリューション:

server {
    error_log  /var/log/nginx/error.log debug;
    listen            80;
    server_name ${NGINX_HOST};
    sendfile          on;
    tcp_nodelay       on;
    root              /static-pages;
    index             index.html index.php;
    try_files $uri $uri/ @proxy;

    location @proxy {
        proxy_read_timeout    90;
        proxy_connect_timeout 90;
        proxy_redirect        off;
        proxy_pass http://wordpress$uri;

        proxy_set_header  X-NginX-Proxy true;
        proxy_set_header  X-Real-IP $remote_addr;
        proxy_set_header  X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header  X-Forwarded-Proto $scheme;
        proxy_set_header  Host $http_host;
        proxy_set_header  Accept-Encoding     "";
        proxy_set_header  Proxy               "";

    }

    location = / {
        proxy_read_timeout    90;
        proxy_connect_timeout 90;
        proxy_redirect        off;
        proxy_pass http://wordpress;

        proxy_set_header  X-NginX-Proxy true;
        proxy_set_header  X-Real-IP $remote_addr;
        proxy_set_header  X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header  X-Forwarded-Proto $scheme;
        proxy_set_header  Host $http_host;
        proxy_set_header  Accept-Encoding     "";
        proxy_set_header  Proxy               "";
    }
}

2つの同様のプロキシを絞ることができればうれしいですが、それはあまり問題ではありません。

おすすめ記事