Nginx 指向不正确的文件夹位置
Nginx points to the incorrect folder location
我正在尝试配置 nginx 以根据请求提供图像。考虑以下配置;
sites-available/images.conf
server {
listen 8888;
server_name localhost;
location images {
root html/uploads;
}
}
nginx.conf
... ommitted ...
http {
include 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 logs/access.log main;
sendfile on;
#tcp_nopush on;
#keepalive_timeout 0;
keepalive_timeout 65;
#gzip on;
server {
listen 80;
server_name localhost;
#charset koi8-r;
#access_log logs/host.access.log main;
location / {
root html;
index index.html index.htm;
}
#error_page 404 /404.html;
# redirect server error pages to the static page /50x.html
#
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
# proxy the PHP scripts to Apache listening on 127.0.0.1:80
#
#location ~ \.php$ {
# proxy_pass http://127.0.0.1;
#}
# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
#
#location ~ \.php$ {
# root html;
# fastcgi_pass 127.0.0.1:9000;
# fastcgi_index index.php;
# fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;
# include fastcgi_params;
#}
# deny access to .htaccess files, if Apache's document root
# concurs with nginx's one
#
#location ~ /\.ht {
# deny all;
#}
}
... ommitted ...
include sites-available/*.conf;
}
...ommitted..
现在,当我尝试访问 http://localhost:8888/images
时,它会输出 404 Not Found
和错误日志
2018/09/01 17:01:30 [error] 10368#9796: *1
"C:\nginx-1.14.0/html/images/index.html" is not found (3: The system
cannot find the path specified), client: 127.0.0.1, server: localhost,
request: "GET /images/ HTTP/1.1", host: "localhost:8888"
请注意,我在 html 中有一个名为 "uploads" 的文件夹。所以我希望 nginx 服务 C:\nginx-1.14.0/html/uploads/index.html
但它没有。我不明白为什么它不会指向 html/uploads
.
的正确文件夹
所有 nginx
URI 都以 /
开头,因此您的 "images" 位置应该是 location /images { ... }
.
如果 URI /images/foo
指向位于 .../html/uploads/foo
的文件,您将需要使用 alias
指令而不是 root
指令。有关详细信息,请参阅 this document。
例如:
location /images {
alias html/uploads;
}
我正在尝试配置 nginx 以根据请求提供图像。考虑以下配置;
sites-available/images.conf
server {
listen 8888;
server_name localhost;
location images {
root html/uploads;
}
}
nginx.conf
... ommitted ...
http {
include 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 logs/access.log main;
sendfile on;
#tcp_nopush on;
#keepalive_timeout 0;
keepalive_timeout 65;
#gzip on;
server {
listen 80;
server_name localhost;
#charset koi8-r;
#access_log logs/host.access.log main;
location / {
root html;
index index.html index.htm;
}
#error_page 404 /404.html;
# redirect server error pages to the static page /50x.html
#
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
# proxy the PHP scripts to Apache listening on 127.0.0.1:80
#
#location ~ \.php$ {
# proxy_pass http://127.0.0.1;
#}
# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
#
#location ~ \.php$ {
# root html;
# fastcgi_pass 127.0.0.1:9000;
# fastcgi_index index.php;
# fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;
# include fastcgi_params;
#}
# deny access to .htaccess files, if Apache's document root
# concurs with nginx's one
#
#location ~ /\.ht {
# deny all;
#}
}
... ommitted ...
include sites-available/*.conf;
}
...ommitted..
现在,当我尝试访问 http://localhost:8888/images
时,它会输出 404 Not Found
和错误日志
2018/09/01 17:01:30 [error] 10368#9796: *1 "C:\nginx-1.14.0/html/images/index.html" is not found (3: The system cannot find the path specified), client: 127.0.0.1, server: localhost, request: "GET /images/ HTTP/1.1", host: "localhost:8888"
请注意,我在 html 中有一个名为 "uploads" 的文件夹。所以我希望 nginx 服务 C:\nginx-1.14.0/html/uploads/index.html
但它没有。我不明白为什么它不会指向 html/uploads
.
所有 nginx
URI 都以 /
开头,因此您的 "images" 位置应该是 location /images { ... }
.
如果 URI /images/foo
指向位于 .../html/uploads/foo
的文件,您将需要使用 alias
指令而不是 root
指令。有关详细信息,请参阅 this document。
例如:
location /images {
alias html/uploads;
}