React+nginx+бэкэнд. Работает через NAT. Почему не работает через nginx?
Предыстория: Разработчики передали со скандалом код. Бэкэнд - Spring. Фронт -React ts. Прокси-nginx. Бд - postgresql. Все в одной сети. 172.17.100.102 - БД. 172.17.100.100 - nginx, бэк, docker с react. 172.17.100.103 - video На боевом сервере (my_site.ru) работает такая архитектура. На резервный клонирую эти машины. Регистрирую домен (my_site.site). Получаю сертификаты LetsEncript. Правлю конфиг nginx. Собираю контейнер с react. В итоге часть функционала не работает. Хотя если в react прописать порт 8080 и пробросить его до бэка, то весь функционал работает.
конфиг nginx
server {
if ($host = www.my_site.site) {
return 301 https://$host$request_uri;
} # managed by Certbot
if ($host = cdn.my_site.site) {
return 301 https://$host$request_uri;
} # managed by Certbot
if ($host = my_site.site) {
return 301 https://$host$request_uri;
} # managed by Certbo
listen 80;
server_name my_site.site cdn.my_site.site www.my_site.site ;
access_log off;
location / {
return 301 https://$server_name$request_uri;
}
}
server {
listen 443;
server_name my_site.site www.my_site.site;
access_log /var/log/nginx/my_site_access.log;
error_log /var/log/nginx/my_site_error.log;
include /etc/nginx/include/ssl_my_site.conf;
client_max_body_size 2G;
# kostyl
location ~ ^/videos/(.*)$ {
proxy_pass http://172.17.100.103:8081/videos/$1$is_args$args;
proxy_set_header X-Forwarded-Host $host;
proxy_set_header X-Forwarded-Server $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Real-IP $remote_addr;
proxy_connect_timeout 600;
}
location ~ ^/api/(.*)$ {
proxy_pass http://172.17.100.100:8080/$1$is_args$args;
proxy_set_header X-Forwarded-Host $host;
proxy_set_header X-Forwarded-Server $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Real-IP $remote_addr;
proxy_connect_timeout 600;
client_max_body_size 1G;
}
# Optional optimisation - please refer to http://nginx.org/en/docs/http/configuring_https_servers.html
# ssl_session_cache shared:SSL:10m;
location / {
proxy_pass http://172.17.100.100:8180/;
proxy_set_header X-Forwarded-Host $host;
proxy_set_header X-Forwarded-Server $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Real-IP $remote_addr;
port_in_redirect off;
proxy_redirect http://172.17.100.100:8180/ /;
proxy_connect_timeout 600;
}
ssl_certificate /etc/letsencrypt/live/my_site.site-0001/fullchain.pem; # managed by Certbot
ssl_certificate_key /etc/letsencrypt/live/my_site.site-0001/privkey.pem; # managed by Certbot
}
server {
listen 443;
server_name cdn.my_site.site;
access_log /var/log/nginx/cdn_my_site_access.log;
error_log /var/log/nginx/cdn_my_site_error.log;
include /etc/nginx/include/ssl_my_site.conf;
client_max_body_size 2G;
location ~ ^/videos/(.*)$ {
proxy_pass http://172.17.100.103:8081/videos/$1$is_args$args;
proxy_set_header X-Forwarded-Host $host;
proxy_set_header X-Forwarded-Server $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Real-IP $remote_addr;
proxy_connect_timeout 600;
}
ssl_certificate /etc/letsencrypt/live/my_site.site-0001/fullchain.pem; # managed by Certbot
ssl_certificate_key /etc/letsencrypt/live/my_site.site-0001/privkey.pem; # managed by Certbot
}
Прописано в React :
axios.create({
baseURL: 'https://my_site.site';
});
Docker :
docker run --rm -d -p 8180:80/tcp 89c2a002c613
При работе через nginx приходится явно указывать
location /login {
proxy_pass 172.17.100.100:8080;
и
location /logout {
proxy_pass 172.17.100.100:8080;
И в трех компонентах возникают ошибки:
bundle.084be85bbd3867ea5dde.js:2 TypeError: n.map is not a function.
Остальные 10 работают нормально.
Хотя бэк все данные отдает. Как такое может быть? Понимаю, что что-то упустил, но не понимаю где.