Как добавить заголовки HSTS в мое приложение nginx / реагировать на flex приложения? - PullRequest
0 голосов
/ 02 сентября 2018

У меня есть приложение реагирования, работающее через nginx в гибкой среде движка приложений, использующее собственный домен и SSL, и я хотел бы добавить заголовки HSTS.

Я знаю, из каких ресурсов я могу найти, что сам код моего приложения должен обслуживать заголовки, а не помещать их непосредственно в любой файл app.yaml,

так что я решил, что смогу сделать это через мой nginx.conf, как описано в https://www.nginx.com/blog/http-strict-transport-security-hsts-and-nginx/

Тем не менее, мой блок nginx специально предназначен для ответа на запросы механизма приложений, поэтому он действительно прослушивает только :8080 -

У меня сложилось впечатление, что все запросы поступают от ядра приложения к: 8080, поэтому я не представляю, что добавление еще одного блока сервера для прослушивания на 443 могло бы что-нибудь сделать?

может быть, мне лучше, чтобы приложение прореагировать как-то подало заголовок?

worker_processes 1;

events {
  worker_connections 1024;
}

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 {
    listen 8080;

    server_name localhost;
    root /src/build;

    if ( $http_x_forwarded_proto = 'http' ) {
      return 301 https://$host$request_uri;
    }

    location /nginx_status {
      stub_status on;
      access_log off;
    }

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

1 Ответ

0 голосов
/ 03 сентября 2018

Ну, теперь я чувствую себя глупо.

Все, что мне нужно было сделать, это добавить следующую строку в нужное место:

add_header Strict-Transport-Security "max-age=31536000; includeSubDomains";

Сначала я пытался добавить его чуть выше части if ( $http_x_forwarded..., а также пытался с ключевым словом always в конце, и мое развертывание продолжало завершаться с ошибкой с этой строкой.

В любом случае, это работает!

полный полученный nginx.conf выглядит следующим образом:

worker_processes 1;

events {
  worker_connections 1024;
}

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 {
    listen 8080;

    server_name localhost;
    root /src/build;

    if ( $http_x_forwarded_proto = 'http' ) {
      return 301 https://$host$request_uri;
    }

    add_header Strict-Transport-Security "max-age=31536000; includeSubDomains";        

    location /nginx_status {
      stub_status on;
      access_log off;
    }

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