Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

how to serve html files in nginx without showing the extension in this alias setup

Tags:

html

alias

nginx

I'm having a lot of trouble setting up this alias inside nginx to display my website correctly.

The website I'm concerned with should be accessible from mywebsite.com/mr and is different from the site located at mywebsite.com/. The website is located at /fullpath (shortened for simplicity) The site needs to serve three kinds of content:

  1. The index file located in /fullpath/index.html.
  2. Other html files (without showing the .html extension in the browser).
  3. Static assets (js/css/img) located in /fullpath and subdirectories.

I've tried changing around the order of matches in the try_files and found situations where they all worked, just not at the same time:

location /mr {   default_type "text/html";   alias /fullpath;    # with this one 1 and 3 work   # try_files $uri/index.html $uri.html $uri;     # with this one 2 and 3 work   # try_files $uri $uri.html $uri/index.html;    # with this one 1 and 2 work   try_files $uri.html $uri/index.html $uri; } 

When one doesn't work it 404's. Does anybody know how I can serve all kinds of files correctly?

like image 610
askmike Avatar asked Mar 16 '13 15:03

askmike


People also ask

How nginx serve html files?

To serve static files with nginx, you should configure the path of your application's root directory and reference the HTML entry point as the index file. In this example, the root directory for the snake deployment is /home/futurestudio/apps/snake which contains all the files.

Where do I put html files in nginx?

By default Nginx Web server default location is at /usr/share/nginx/html which is located on the default file system of the Linux.

Does nginx serve static files?

Configure NGINX and NGINX Plus to serve static content, with type-specific root directories, checks for file existence, and performance optimizations.


1 Answers

Apparently alias and try_files don't work together. However, I don't think you need to use alias.

location /mr {   default_type "text/html";   try_files  /fullpath/$uri /fullpath/$uri.html /fullpath/$uri/index.html  /fullpath/index.html; } 

Which would try:

  • Exact file.
  • File with .html added.
  • Index in the path.
  • Default index.

I think the root directive does work with try files but am unable to test.

server{     location /mr {          root /home/mysite/fullpath;          default_type "text/html";         try_files  $uri $uri.html $uri/index.html index.html;     } } 
like image 157
Danack Avatar answered Oct 12 '22 06:10

Danack