我不知道如何重定向/
到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/*;
}
我的服务器配置位于 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
。
答案1
基本上,root
指令(在位置块内)没有提到完整路径。另外,指令;
末尾缺少a index
(可能是拼写错误,nginx 通常会捕获这些拼写错误)。
因此,位于 sites-enabled 中的服务器配置将如下所示(经过上述两项更改)...
服务器 { 根/主页/www/公共; 听80; 服务器名称本地主机; 索引 index.html index.htm; # 代理请求到节点 位置@proxy { proxy_set_header 主机 $http_host; proxy_set_header X-真实IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-NginX-Proxy true; 代理密码 http://127.0.0.1:3010; 代理重定向关闭; 休息; } 地点 / { 尝试文件$uri $uri/@proxy; } # 其余配置 # ... # ... }