我正在尝试配置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 [错误] 10368#9796:* 1 找不到“ C:\ nginx-1.14.0 / html / images / index.html”(3:系统 找不到指定的路径),客户端:127.0.0.1,服务器:localhost, 请求:“ GET / images / HTTP / 1.1”,主机:“ localhost:8888”
请注意,我在html中有一个名为“ uploads”的文件夹。因此,我希望nginx服务C:\nginx-1.14.0/html/uploads/index.html
,但事实并非如此。我不明白为什么它不能指向正确的文件夹html/uploads
。
答案 0 :(得分:1)
所有nginx
URI均以/
开头,因此您的“图片”位置应为location /images { ... }
。
如果URI /images/foo
指向位于.../html/uploads/foo
的文件,则将需要使用alias
指令而不是root
指令。有关详细信息,请参见this document。
例如:
location /images {
alias html/uploads;
}