#reactjs #nginx #nginx-reverse-proxy #nginx-config
#реагирует на #nginx #nginx-обратный прокси #nginx-конфигурация
Вопрос:
У меня есть приложение react, работающее на nginx — оно взаимодействует с серверной частью Java на другом узле k8s.
Проблема, с которой я борюсь, заключается в том, что, несмотря на то, что приложение в целом работает (навигация и все запросы API работают нормально, действие обновления нарушено на всех подстраницах, кроме главной страницы/корневой страницы.
Проще говоря, действие обновления не работает, если URL — адрес содержит что-то большее, чем просто домен.
В таких случаях возвращается 404 со следующим сообщением:
The requested resource [/myApp/WEB-INF/secure/index.html] is not available
также косая черта добавляется к URL-адресу, поэтому, хотя исходный URL-адрес выглядит следующим образом:
https://my-app.comp.com/myApp/someModule
URL-адрес, вызывающий 404, выглядит следующим образом: https://my-app.comp.com/myApp/someModule/
Я полагаю, что проблема вызвана самой конфигурацией nginx, так как одно и то же приложение отлично работает, будучи частью файла WAR на tomcat или запускаясь через npm start.
Мои файлы конфигурации nginx выглядят следующим образом:
nginx.conf (по умолчанию, никаких изменений там нет)
error_log /var/log/nginx/error.log notice; pid /tmp/nginx.pid; events { worker_connections 1024; } http { proxy_temp_path /tmp/proxy_temp; client_body_temp_path /tmp/client_temp; fastcgi_temp_path /tmp/fastcgi_temp; uwsgi_temp_path /tmp/uwsgi_temp; scgi_temp_path /tmp/scgi_temp; include /etc/nginx/mime.types; default_type application/octet-stream; log_format main '$remote_addr - $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" "$http_x_forwarded_for"'; access_log /var/log/nginx/access.log main; sendfile on; #tcp_nopush on; keepalive_timeout 65; #gzip on; include /etc/nginx/conf.d/*.conf; }
server.conf (my, custom config file)
upstream backend { server backend-server-fqdn:8080; } server { listen 3000; listen [::]:3000; server_name frontend; client_max_body_size 10M; root /usr/share/nginx/html; index index.html index.htm; location ~* /(index.html|favicon.ico|styles.css|styles.min.css|css/.*|js/.*|images/.*) { root /usr/share/nginx/html; } location / { try_files $uri $uri/ @rewrites; } location @rewrites { rewrite ^(. )$ /index.html last; } location /myApp { proxy_pass http://server backend-server-fqdn:8080/myApp; absolute_redirect off; proxy_read_timeout 120s; proxy_connect_timeout 120s; proxy_send_timeout 120s; send_timeout 120s; } }