2016-04-24 15 views
0

ポート8080で動作するNode.jsアプリケーションがあり、NGINXサーバーが前面に実行され、キャッシュの逆プロキシとして機能しています。NGINXリバースプロキシによってキャッシュされたコンテンツに対してHTTPヘッダーを設定できません。

NGINXが1ページ、私のアプリケーションのダッシュボードを除くeverythnigをキャッシュするようにします:/dashboard。ここで

は、これまでのところ、私の設定です:

server { 

    listen  80; 
    server_name mydomain.name; 

    # SECURITY 
    add_header X-Frame-Options SAMEORIGIN; 
    add_header X-XSS-Protection "1; mode=block"; 
    add_header X-Content-Type-Options nosniff; 
    add_header Content-Security-Policy "default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval'; img-src 'self' https://gravatar.com; style-src 'self' 'unsafe-inline' https://fonts.googleapis.com; font-src 'self' https://fonts.gstatic.com; object-src 'none'"; 

    ... 

    proxy_set_header  Host $host; 
    proxy_set_header X-Forwarded-For $remote_addr; 

    location/{ 
     add_header X-Proxy-Cache $upstream_cache_status; 
     proxy_cache   STATIC; 
     proxy_pass   http://127.0.0.1:8080; 
    } 

    location /dashboard { 
     proxy_pass   http://127.0.0.1:8080/dashboard; 
    } 
} 

キャッシングが正常に動作しているようだが、セキュリティヘッダ(X-XSS-ProtectionContent-Security-Policyなど)のみ/dashboardにはないようなキャッシュされたページに追加されているように見えます/または/login

現在の設定に何か問題がありますか?問題を解決するにはどうすればよいですか?

答えて

1

ロケーションブロック外の "add_header"ディレクティブは、処理中のロケーションブロック内に "add_headers"がある場合は無視されます。 "/ dashboard"には "add_header"がないため、サーバーレベルの1が使用されています。 docsパー

いくつかはadd_headerディレクティブがあるかもしれません。これらのディレクティブは、現在のレベルで定義されているadd_headerディレクティブがない場合にのみ、以前のレベルから継承されます。

+0

それでした。どうもありがとうございました! – Bertrand

関連する問題