LINUX.ORG.RU
решено ФорумAdmin

nginx: не могу настроить конфиг на статический контент

 ,


0

1

Добрый день, камрады.

Помогите плиз разобраться с проблемой - настроить конфиг nginx нужным образом.

конфиг /etc/nginx/sites-available/default

server {
listen 443 ssl http2 ;
server_name mysite.ru;

ssl on;
ssl_certificate /main.crt;
ssl_certificate_key /main.key;
ssl_session_cache shared:SSL:50m;
ssl_session_timeout 1h;
ssl_buffer_size 4k;

keepalive_timeout 50;
keepalive_requests 100;
reset_timedout_connection on;
client_body_timeout 10;
send_timeout 2;
client_max_body_size 1m;
open_file_cache_valid 30s;
large_client_header_buffers 2 1k;

location /aaa {
root /var/www/frontend/build;
index index.html;
}

location / {
root /var/www/frontend/build;
index index.html;
location /index.php {
root /var/www/wp;
fastcgi_pass unix:/var/run/php/php7.2-fpm.sock;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include snippets/fastcgi-php.conf;
}
}

проблематика следующая: Когда захожу на https://mysite.ru, перехожу в раздел aaa - страница скролица на соответствующий раздел, при этом в адресной строке появляется https://mysite.ru/aaa

Если сразу в браузере ввести адрес https://mysite.ru/aaa, выдается 404 ошибка, в логах nginx:

2019/11/07 16:14:11 [error] 14944#14944: *1 open() «/var/www/frontend/build/aaa» failed (2: No such file or directory), client: 192.167.1.6, server: mysite.ru, request: «GET /aaa HTTP/2.0», host: «mysite.ru»

Прошу подсказать, как сделать, чтобы при открытии https://mysite.ru/aaa страница сразу скролилась в нужное место или хотя бы кидалось на главную (index.html) без 404. Если есть еще какая-то конструктивная критика к параметрам конфига - буду рад выслушать.

ps. В идеале, вообще оставить один location, оптимизированный под все запросы

____________

ubuntu 16.10
nginx 1.10.3



Последнее исправление: seregakhv (всего исправлений: 1)

захожу на https://mysite.ru, перехожу в раздел aaa - страница скролица на соответствующий раздел

Я так понимаю там якорь. Тоесть линк виглядит примерно так:

https://ru.wikipedia.org/wiki/HTML5#XHTML5

Верно?

i3wm
()
Последнее исправление: i3wm (всего исправлений: 1)

«#» и всё что после - называется «fragment identifier», служит для навигации по документу и обычно на сервер браузерами не отправляется.

хотя бы кидалось на главную (index.html) без 404

Вот тут можна настроить в /etc/nginx/sites-enabled/default

server {
        listen 80 default_server;
        listen [::]:80 default_server ipv6only=on;

        . . .

        error_page 404 /custom_404.html;
        location = /custom_404.html {
                root /usr/share/nginx/html;
                internal;
        }
}
i3wm
()
Ответ на: комментарий от i3wm

используется именно /

Спасибо за совет, добавлю!

Нашли простое решение - запускать ноду как собственный сервер. Возможно, кому-нибудь поможет:

sudo npm i -g serve #установка модуля serve

npm install

npm run build

serve -s build -p 5001

Дальше в конфиге настраиваем вместо root proxy:

proxy_pass http://localhost:5001; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection ‘upgrade’; proxy_set_header Host $host;

и огонь :)

Всем спасибо за внимание!

seregakhv
() автор топика
Последнее исправление: seregakhv (всего исправлений: 1)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.