我有以下文件夹结构,我的应用程序提供静态目录文件夹中的nginx
/应用/服务器 - 有API内容
/应用/静态 - 有图像,js和css文件在各自的像(/静态/图像/静态/ JS ...等)的文件夹
upstream pythonapp {
server 127.0.0.1:8080;
}
server {
listen 80;
server_name www.example.com;
error_log /home/LogFiles/docker/error.log warn;
root /app;
index index.html index.htm;
location ~* \.(js|css|png|jpg|jpeg|gif|ico)$ {
expires 1d;
}
location /static {
autoindex on;
alias /app/static/;
}
location/{
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header Host $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_http_version 1.1;
proxy_pass http://pythonapp;
proxy_cache_bypass $http_upgrade;
}
}
一切工作的预期,但现在我意识到,我们正在使用 http://xyz.abc/images/abc.gif
而不是 http://xyz.abc/static/images/abc.gif
由于URL中没有静态,我的/静态规则将不再受到尊重。
我已经阅读过不同方法的在线文章,但是没有任何一篇关于没有/ static的URL。任何人有过这个问题,并知道解决方案?
新编辑:
我已经将内容更改为@shdaws提到。我必须在服务器级别更改根目录才能使其工作。
server {
listen 80;
server_name www.example.com;
error_log /home/LogFiles/docker/error.log warn;
root /app/static;
index index.html index.htm;
location ~* \.(js|css|png|jpg|jpeg|gif|ico)$ {
expires 1d;
}
location ^~ /(audio|build|images|style) {
autoindex on;
root /app/static;
}
location/{
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header Host $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_http_version 1.1;
proxy_pass http://pythonapp;
proxy_cache_bypass $http_upgrade;
}
}
现在,它服务于http://abc.xyz/images/test.jpg
网址在/app/static/images
文件夹的静态内容。但http://abc.xyz/images/d1/test.jpg
不起作用。
编辑: - 上面的配置工程,它也提供子文件夹内容。看起来像我有.mp3文件的一些配置问题。
@sjdaws嗨,现在服务/应用/静态文件夹的内容,但其子文件夹不工作 – prashanth
@prashanth那么你的错误日志说?子文件夹应该工作正常,如果文件。 – sjdaws
我做了一些更多的调试在我的结尾..它确实服务于子文件夹中的文件..但由于某种原因.html/.mp3文件不工作在任何文件夹..看起来是一些MIME类型问题 – prashanth