I have several sets of static .html
files on my server, and I would like use nginx to serve them directly. For example, nginx should serve an URI of the following pattern:
www.mysite.com/public/doc/foo/bar.html
with the .html
file that is located at /home/www-data/mysite/public/doc/foo/bar.html
. You can think of foo
as the set name, and bar
as the file name here.
I wonder whether the following piece of nginx config would do the job:
server {
listen 8080;
server_name www.mysite.com mysite.com;
error_log /home/www-data/logs/nginx_www.error.log;
error_page 404 /404.html;
location /public/doc/ {
autoindex on;
alias /home/www-data/mysite/public/doc/;
}
location = /404.html {
alias /home/www-data/mysite/static/html/404.html;
}
}
In other words, all requests of the pattern /public/doc/.../....html
are going to be handled by nginx, and if any given URI is not found, a default www.mysite.com/404.html
is returned.
It should work, however http://nginx.org/en/docs/http/ngx_http_core_module.html#alias says:
When location matches the last part of the directive’s value: it is better to use the root directive instead:
which would yield:
server {
listen 8080;
server_name www.mysite.com mysite.com;
error_log /home/www-data/logs/nginx_www.error.log;
error_page 404 /404.html;
location /public/doc/ {
autoindex on;
root /home/www-data/mysite;
}
location = /404.html {
root /home/www-data/mysite/static/html;
}
}
2
You can use the following code.
You can also use this code to serve vuejs or reactjs static files, Just modifile the alias
to point to the root of your file directory;
location /files {
#autoindex on;
alias /files;
try_files $uri /index.html =404;
}
Make sure the access permissions are right too.
sudo chown -R 1000 /files
Example on how to access the files http://example.com/files/text-file.txt
if you are using static middleware for example app.use(express.static('assets'));
suppose you have an image in yourprojectAddress/assets/media/cat1.jpg and you are using port 3000 for your application
so to serve that image this is nginx config
location /media/ {
proxy_pass http://127.0.0.1:3000;
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-Forwarded-Proto $scheme;
}
Explore related questions
See similar questions with these tags.