我需要通过我在8080
的应用程序服务器提供我的应用程序,并在不接触应用程序服务器的情况下从目录中提供静态文件。我的nginx配置是这样的……
# app server on port 8080
# nginx listens on port 8123
server {
listen 8123;
access_log off;
location /static/ {
# root /var/www/app/static/;
alias /var/www/app/static/;
autoindex off;
}
location / {
proxy_pass http://127.0.0.1:8080;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
现在,有了这个配置,一切都运行得很好。注意,root
指令被注释掉了。
如果我激活root
并停用alias
,它将停止工作。但是,当我从root
中删除尾随的/static/
时,它又开始工作了。
有人能解释一下发生了什么吗。此外,请清楚而详细地解释root
和alias
之间的区别,以及它们的用途。
发布于 2014-10-06 00:38:31
只是对@good_computer非常有用的回答的一个快速补充,我想用一个文件夹替换URL的根目录,但前提是它必须与包含静态文件的子文件夹相匹配(我希望将其保留为路径的一部分)。
例如,如果请求的文件是/app/js
或/app/css
格式的,请查看/app/location/public/[that folder]
。
我使用正则表达式实现了这一功能。
location ~ ^/app/((images/|stylesheets/|javascripts/).*)$ {
alias /home/user/sites/app/public/$1;
access_log off;
expires max;
}
发布于 2019-05-25 17:33:03
alias
用于替换请求路径中的位置部分路径( location part path,LPP),而root
用于添加到请求路径。
它们是将请求路径映射到最终文件路径的两种方法。
alias
只能在位置块中使用,并且它将覆盖外部root
。
位置块中不能同时使用alias
和root
。
发布于 2017-09-16 16:15:30
server {
server_name xyz.com;
root /home/ubuntu/project_folder/;
client_max_body_size 10M;
access_log /var/log/nginx/project.access.log;
error_log /var/log/nginx/project.error.log;
location /static {
index index.html;
}
location /media {
alias /home/ubuntu/project/media/;
}
}
服务器块在nginx上激活静态页面。
https://stackoverflow.com/questions/10631933
复制相似问题