Alias vs root in regex location

Trying to serve nagios web GUI through nginx.

Part of config:

location ~ “^/nagios/(.+?.php)(/.)?$"
{
alias “/usr/share/nagios3/htdocs/”;
try_files $1 $uri $uri/ /nagios/index.php;
#rewrite "^/nagios/(.+?.php)(/.
)?$” /$1$2 break;

auth_basic “Authorization required to access Nagios”;
auth_basic_user_file htpasswd;

PHP-FPM Settings

include avi9526/php-fpm;
}
location ~* ^/cgi-bin/nagios3/(.+?.cgi)$
{
alias “/usr/lib/cgi-bin/nagios3/”;
try_files $1 $uri $uri/ =404;
#rewrite “^/cgi-bin/nagios3/(.+?.cgi)$” /$1 break;

auth_basic “Authorization required to access Nagios”;
auth_basic_user_file htpasswd;

fastcgi_param AUTH_USER $remote_user;
fastcgi_param REMOTE_USER $remote_user;

include avi9526/fcgiwrap;
}

it’s seems to be working. If i change “alias” to “root” and uncomment
“rewrite” directive for both php and cgi scripts it will work as well.
So,
what the difference? And why most online manuals suggests to use “root”
followed by rewrite?

Posted at Nginx Forum:

On Fri, Apr 10, 2015 at 07:09:43PM -0400, avi9526 wrote:

Hi there,

Trying to serve nagios web GUI through nginx.

location ~ “^/nagios/(.+?.php)(/.*)?$”
{
alias “/usr/share/nagios3/htdocs/”;
try_files $1 $uri $uri/ /nagios/index.php;

location ~* ^/cgi-bin/nagios3/(.+?.cgi)$
{
alias “/usr/lib/cgi-bin/nagios3/”;
try_files $1 $uri $uri/ =404;

it’s seems to be working. If i change “alias” to “root” and uncomment
“rewrite” directive for both php and cgi scripts it will work as well. So,
what the difference?

Module ngx_http_core_module and Module ngx_http_core_module.

Note that “alias” and “try_files” do have some unobvious interactions,
especially in a regex location. See
http://trac.nginx.org/nginx/ticket/97
for some details.

Your configuration works because of your non-typical “try_files”
directive. I suspect that not all of the four arguments are ever used –
but it does depend on the incoming request, the files on the file
system,
and how you want them to be matched together.

And why most online manuals suggests to use “root”
followed by rewrite?

I don’t see that.

I see some suggesting root and rewrite; and some suggesting root; and
some suggesting alias.

I suspect that it depends on where things are installed.

f

Francis D. [email protected]