nginx try_files с add_header - PullRequest
0 голосов
/ 10 мая 2018

Может кто-нибудь объяснить это?

У меня есть блок сервера nginx с этим фрагментом:

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

По сути, я использую это для обслуживания Angular SPA. Работает хорошо и замечательно.

Теперь я хотел добавить заголовок Access-Control-Allow-Origin к ответу. Таким образом, я изменил блок так:

location / {
  if ($request_method = 'OPTIONS') {
          add_header 'Access-Control-Allow-Origin' '*';
          add_header 'Access-Control-Max-Age' 1728000;
          return 204;
  }
  if ($request_method = 'GET') {
          add_header 'Access-Control-Allow-Origin' '*';
  }
  try_files $uri $uri/ /index.html;
}

Теперь, когда я получаю доступ к http://<application>.com, я получаю страницу, и я могу переходить к подпрограммам, таким как http://<application>.com/some-page. Но если я напрямую пытаюсь получить доступ к http://<application>.com/some-page, я получаю nginx 404. Раньше такого не было. Если я закомментирую оператор if для GET, все вернется на круги своя.

Почему? Какое значение здесь имеет оператор if?

...