Directory listing isn't working on nginx showing 404 error
UPDATED nginx.conf FILE AND ANYTHING ELSE TO THE LATEST STATE
BUT STILL GETTING 404 ERRORS :-(
So i was trying to setup directory listing on my server with nginx, i followed the instructions step-by-step but nothing worked out -- always popping either 403 or 404 errors while permissions are all set to 755...
When i enable autoindex on the root location it worked fine, but when i put it on the "dl/" location, it either shows a 404 when requesting /dl or 403 when requesting /dl/
After i followed @Bryce Larson's steps...403 is gone now only 404 is there...which is still not okay...
# pwd
/root/Downloads/dl
# ls -lha
total 12K
drwxr-xr-x 2 nginx root 4.0K Nov 25 20:01 .
drwxr-xr-x 4 root root 4.0K Nov 26 09:11 ..
-rwxr-xr-x 1 nginx root 26 Nov 25 20:01 blah.txt
Here's the nginx.conf
:
https://0bin.net/paste/he2oIb2OFou4G9Fd#v5qt5M7scM8jlSRkl9B+GepP+PoInAHrfZrJNJ7Ch9U
I'm gonna use 0bin for long code/config etc to save time&effort, plus it's got syntax coloring ;-)
And yeah i've restarted nginx a hundred times just to make sure it takes the new config...so what's wrong now?
Otherwise, how would you configure the nginx server for this purpose? -- your own nginx.conf files are welcomed plz paste it here: https://0bin.net
Solution 1:
I eventually found the solution myself X-(
So to specify the location
with root, ur gonna have to specify the parent directory instead of the directory that ur planning to serve (which is pretty obvious now that i think of it -- it's the god damn root!).
So as in my example i should specify /root/Downloads
with the root parameter, then the server is gonna try to find a dir named dl
within it.
I did recall trying this way but the permission issues as mentioned by @Bryce Larson could be the reason why it didn't succeed.
Here's the final nginx.conf
in case people are interested.
Conclusion:
The correct way to setup directory listing in nginx is to
A. specify the parent directory of the directory that ur trying to serve.
B. make sure the permissions from /
all the way to the directory that ur trying to serve is set executable, i.e chmod +X -R .