我正在尝试将主题文件移出文档根目录。我使用 nginx 作为服务器,并尝试在位置块中使用别名和根指令。我尝试过的所有方法都不起作用,我怀疑是try_files
里面的指令location /
。我的主题文件位于/var/www/naturesflowllc/ui/assets
这是我的 nginx conf 文件。
server {
listen 80;
listen [::]:80;
server_name my.beupnow.dev.kahunacoding.com;
root /var/www/naturesflowllc/mybeupnow/public_html;
index index.php index.html index.htm;
location / {
try_files $uri $uri/ /index.php$is_args$args;
}
location ~ \.php$ {
try_files $uri /index.php =404;
fastcgi_read_timeout 180;
fastcgi_pass php-upstream;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
location /assets/ {
alias /var/www/naturesflowllc/ui/assets/;
# root /var/www/naturesflowllc/ui/;
autoindex off;
# autoindex on;
}
location ~ /\.ht {
deny all;
}
error_log /var/www/naturesflowllc/application/logs/my_beupnow_error.log debug;
access_log /var/www/naturesflowllc/application/logs/my_beupnow_access.log;
location = /favicon.ico { access_log off; log_not_found off; }
location = /robots.txt { access_log off; log_not_found off; }
}
我多次尝试,alias
但root
似乎autoindex
没有任何效果。
编辑:因此,我希望我的资产能够像这样被服务:
<link href="/assets/global/plugins/font-awesome/css/font-awesome.min.css" rel="stylesheet" type="text/css" />
和这个:
<script src="/assets/global/plugins/jquery.min.js" type="text/javascript"></script>
来自我的 ui 文件夹,如下所示:
|____assets
| |____apps
| | |____css
| | | |____inbox.css
| | | |____inbox.min.css
| | | |____ticket.css
| | | |____ticket.min.css
| | | |____todo-2.css
| | | |____todo-2.min.css
| | | |____todo.css
| | | |____todo.min.css
| | |____img
| | |____scripts
| | | |____calendar.js
| | | |____calendar.min.js
| | | |____inbox.js
| | | |____inbox.min.js
| | | |____todo-2.js
| | | |____todo-2.min.js
| | | |____todo.js
| | | |____todo.min.js
| |____global
| | |____css
| | | |____components-md.css
| | | |____components-md.min.css
| | | |____components-rounded.css
| | | |____components-rounded.min.css
| | | |____components.css
| | | |____components.min.css
| | | |____plugins-md.css
| | | |____plugins-md.min.css
| | | |____plugins.css
| | | |____plugins.min.css
| | |____img
| | | |____accordion-plusminus.png
| | | |____ajax-loading.gif
| | | |____ajax-modal-loading.gif
| | | |____datatable-row-openclose.png
... (truncated)
我想从这里删除资产文件夹/var/www/naturesflowllc/mybeupnow/public_html
并将其重新定位到/var/www/naturesflowllc/ui/assets/
我希望这能阐明我想要实现的目标。
编辑:我在这上面浪费了几个小时才发现我编辑了错误的 nginx.conf 文件 8-(。使用 或 都可以正常root
工作alias
。
答案1
https://nginx.ru/en/docs/http/ngx_http_core_module.html#alias 当位置与指令值的最后一部分匹配时:
location /images/ {
alias /data/w3/images/;
}
这是最好使用根指令改为:
location /images/ {
root /data/w3;
}
这是你的案子。
我为您创建了一个示例并在我的 ubuntu 上尝试了它:
server {
listen 80;
server_name 127.0.0.1;
root /tmp/www/;
# 1s location
location / {
try_files $uri $uri/ /index.php;
}
# 2nd location
location ~ \.php$ {
proxy_pass http://127.0.0.1:8080;
}
#3d location
location /assets/ {
root /tmp/somedir/;
}
}
http://127.0.0.1/- “第一个位置(在 /tmp/www 中搜索索引文件),然后是第二个位置,因为我的 /tmp/www 中没有索引文件”
http://127.0.0.1/assets/some.js- “3d 位置(返回 /tmp/somedir/assets/some.js)”
它对我的 nginx 1.10.3 有效。如果不适合您,请提供您的 nginx 访问和错误日志。