У меня есть приложение Rails в качестве API и приложение Nuxt. js (Vue. js) в качестве внешнего клиента.
В настоящее время я обслуживаю их локально. Rails работает на порту 3000
, а Nuxt. js работает на порте 4000
Установите my /etc/hosts
на имя домена: api.todos.test
для Rails и todos.test
для Nuxt. js
Мои конфигурации NGINX:
upstream rails_api {
server 127.0.0.1:3000;
}
server {
listen 80;
listen [::]:80;
server_name ~^(?<subdomain>.+)\.todos.test;
location ~ ^/rest/ {
proxy_pass http://rails_api;
proxy_set_header Real-IP $remote_addr;
proxy_set_header Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header NginX-Proxy true;
proxy_set_header Host $subdomain.todos.test:3000;
proxy_pass_header Set-Cookie;
proxy_redirect off;
}
location / {
proxy_pass http://todos.test:4000;
proxy_set_header Real-IP $remote_addr;
proxy_set_header Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header NginX-Proxy true;
proxy_set_header Host $host;
proxy_redirect off;
}
}
Я могу попасть на оба сервера, поэтому NGINX обрабатывает проксирование. My Rails API возвращает ответ с Set-Cookie: _session_id=...
, но по какой-то причине это никогда не устанавливается в Chrome.
Я что-то делаю не так в NGINX?