我不知道如何重定向/
到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/*;
}
Run Code Online (Sandbox Code Playgroud)
和我的服务器配置位于启用站点
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;
}
Run Code Online (Sandbox Code Playgroud)
其他一切都工作得很好。请求被正确代理到节点并正确提供静态内容。我只需要能够转发到的请求/
来/index.html
。
Pot*_*thu 10
基本上,root
指令(在 location 块内)没有提到完整路径。此外,指令;
末尾缺少a index
(可能是拼写错误,nginx 通常会捕获这些拼写错误)。
因此,位于启用站点的服务器配置将如下所示(在上述两个更改之后)...
服务器 { 根 /home/www/public; 听80; server_name 本地主机; index index.html index.htm; # 代理请求节点 位置@proxy { proxy_set_header 主机 $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 关闭; 休息; } 地点 / { try_files $uri $uri/ @proxy; } # 其余配置 # ... # ... }