I'm trying to move my theme files outside of document root. I'm using nginx for the server and I've tried using alias and root directives in a location block. Nothing I've tried works and I suspect it's the try_files
directive inside location /
. I have my themes files in a folder at /var/www/naturesflowllc/ui/assets
Here is my nginx conf file.
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; }
}
I've tried alias
and root
and autoindex
on and off nothing seems to work.
EDIT:
So I want to have my assets served like this:
<link href="/assets/global/plugins/font-awesome/css/font-awesome.min.css" rel="stylesheet" type="text/css" />
and this:
<script src="/assets/global/plugins/jquery.min.js" type="text/javascript"></script>
from my ui folder which is like this:
|____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)
I want to remove the assets folder from here /var/www/naturesflowllc/mybeupnow/public_html
and relocate it to /var/www/naturesflowllc/ui/assets/
I hope this clarifies what I'm trying to achieve.
EDIT:
I wasted a couple of hours on this only to find out I was editing the wrong nginx.conf file 8-(. Works like it should with either root
or alias
.
Best Answer
https://nginx.ru/en/docs/http/ngx_http_core_module.html#alias When location matches the last part of the directive’s value:
it is better to use the root directive instead:
It's your case.
I create an example for you and tried it at my ubuntu:
http://127.0.0.1/ - "1st location (searching index file in /tmp/www), then 2nd location because where is no index file in my /tmp/www"
http://127.0.0.1/assets/some.js - "3d location (returns /tmp/somedir/assets/some.js)"
It works for me with nginx 1.10.3. If not for you, so please provide your nginx access and error logs.