Nginx location directive doesn't seem to be working. Am I missing something?
nginx
Solution
The problem here is that only the "best" `location` directive gets taken, in this order:
location = <path> (longest match wins)
location ^~ <path> (longest match wins)
location ~ <path> (first defined match wins)
location <path> (longest match wins)
Using this ruleset, your `/phpmyadmin` `location` directive is beaten out by the regular expression "`.php$`" `location` directive, so the former is ignored entirely. Additionally, your php fastcgi directive is hard-wired to your `/home/me/dev` directory, which means that phpMyAdmin is totally inaccessible. You can use a rewrite to get the correct root for your phpMyAdmin scripts:
location ~ \.php$ {
set $php_root /home/me/dev;
if ($request_uri ~* /phpmyadmin) {
set $php_root /var/www/nginx-default/phpMyAdmin;
}
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $php_root$fastcgi_script_name;
include /etc/nginx/fastcgi_params;
}
Problem
I've set up Nginx as my main web server and have two Mochiweb based servers behind it. Certain requests are reverse-proxied to these two servers. now, I want to access phpmyadmin (located at /var/www/nginx-default/phpMyAdmin) using nginx, but it keeps saying Error 404 not found. Am I missing something obvious here? ``` server { ############### General Settings #################### listen 80; server_name localhost; access_log /home/me/dev/wwwaccess.log; ############## Document Root ####################### location / { root /home/me/dev; index index.html index.htm index.php; } ############## PHPMyAdmin ####################### location /phpmyadmin { root /var/www/nginx-default/phpMyAdmin; index index.html index.htm index.php; } ############## Proxy Settings for FastCGI Server ##### location ~ \.php$ { fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME /home/me/dev$fastcgi_script_name; include /etc/nginx/fastcgi_params; } ############# Proxy Settings for Mochi1 ############### location /mochi1 { proxy_pass http://127.0.0.1:8000; proxy_redirect off; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; client_max_body_size 10m; client_body_buffer_size 128k; proxy_connect_timeout 90; proxy_send_timeout 90; proxy_read_timeout 3600; proxy_buffering off; } ############# Proxy Settings for Mochi2 ############### location /mochi2 { proxy_pass http://127.0.0.1:8001; proxy_redirect off; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; client_max_body_size 10m; client_body_buffer_size 128k; proxy_connect_timeout 90; proxy_send_timeout 90; proxy_read_timeout 3600; proxy_buffering off; } ############# Error redirection pages ################ error_page 500 502 503 504 /50x.html; location = /50x.html { root /home/me/dev; } } ```