Я не могу понять, как перенаправить /
к index.html
. Я просмотрел темы serverfault и, думаю, пробовал все предложения, включая:
location /
index index.html
на server
уровень, в пределах location /
и в статическом контентеnode.js
доверенности к location ~ /i
вместо внутри location /
Очевидно, что-то не так в моей конфигурации. Вот мой nginx.conf:
worker_processes 1;
pid /home/logs/nginx.pid;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
error_log /home/logs/error.log;
access_log /home/logs/access.log combined;
include sites-enabled/*;
}
и конфигурация моего сервера, расположенная на сайтах с поддержкой
server {
root /home/www/public;
listen 80;
server_name localhost;
# proxy request to node
location / {
index index.html index.htm;
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-NginX-Proxy true;
proxy_pass http://127.0.0.1:3010;
proxy_redirect off;
break;
}
# static content
location ~ \.(?:ico|jpe?g|jpeg|gif|css|png|js|swf|xml|woff|eot|svg|ttf|html)$ {
access_log off;
add_header Pragma public;
add_header Cache-Control public;
expires 30d;
}
gzip on;
gzip_vary on;
gzip_http_version 1.0;
gzip_comp_level 2;
gzip_proxied any;
gzip_min_length 1000;
gzip_disable "msie6";
gzip_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript;
}
Все остальное работает нормально. Запросы правильно передаются на узел, и статический контент обслуживается правильно. Мне просто нужно иметь возможность пересылать запросы на /
к /index.html
.
В основном root
директива (внутри блока местоположения) не упоминала полный путь. Также ;
отсутствует в конце index
директива (возможно, это опечатка, nginx обычно выявляет эти опечатки).
Итак, конфигурация вашего сервера, расположенная на сайтах с поддержкой, будет выглядеть так (после двух вышеуказанных изменений) ...
server { root /home/www/public; listen 80; server_name localhost; index index.html index.htm; # proxy request to node location @proxy { proxy_set_header Host $http_host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-NginX-Proxy true; proxy_pass http://127.0.0.1:3010; proxy_redirect off; break; } location / { try_files $uri $uri/ @proxy; } # rest of the configuration # ... # ... }