Rails 5 ActionController :: InvalidAuthenticityToken в производственной среде Nginx - PullRequest
0 голосов
/ 07 мая 2019

На Rails 5.2, среда SSL, работающая как reverse_proxy с Nginx, всякий раз, когда я отправляю форму, я получаю сообщение об ошибке:

Заголовок HTTP Origin (https://agro2business.com.br) не соответствует запросу.base_url (https://agro2business.com.br, agro2business.com.br)

Завершено 422 необработанных объекта в 1 мс (ActiveRecord: 0,0 мс)

ActionController :: InvalidAuthenticityToken (ActionController :: InvalidAuthenticityenok)1012 *

Я читал о настройке параметров и Nginx для передачи заголовков в других вопросах StackOverflow, но пока не повезло. Мой файл конфигурации nginx:

proxy_pass http://localhost:4000;}

location / {

            proxy_pass http://localhost:4000;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header Host $http_host;
            proxy_redirect off;
            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-Real-Port $server_port;
            proxy_set_header X-Real-Scheme $scheme;
            proxy_set_header X-NginX-Proxy true;
            proxy_set_header X-Forwarded-Proto $scheme;
            proxy_set_header X-Forwarded-Ssl on;
    }

Почему Rails пытается сравнить заголовок с двумя значениями?

request.base_url (https://agro2business.com.br, agro2business.com.br)

1 Ответ

0 голосов
/ 12 мая 2019

Моя проблема заключалась в том, что в моем конфиге nginx я дважды настраивал заголовок Хост , что приводило к ошибкам при генерации URL, что, в свою очередь, приводило к аннулированию представления формы.

  proxy_pass http://localhost:4000;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        **proxy_set_header Host $http_host;**
        proxy_redirect off;
        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-Real-Port $server_port;
        proxy_set_header X-Real-Scheme $scheme;
        proxy_set_header X-NginX-Proxy true;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_set_header X-Forwarded-Ssl on;

Просто удалите один из двух proxy_set_header Host $ http_host; добились цели

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...