Nagios обслуживается виртуальным сервером nginx с именем "nagios" со следующей конфигурацией:
# nagios server
server {
server_name nagios;
root /usr/share/nagios/share;
listen 80;
index index.php index.html index.htm;
access_log /etc/nginx/logs/nagios.access.log;
allow 10.10.0.0/16;
allow 127.0.0.1;
location ~ \.php$ {
fastcgi_pass unix:/run/php-fpm/php-fpm.sock;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param AUTH_USER "nagios";
fastcgi_param REMOTE_USER "nagios";
fastcgi_index index.php;
include fastcgi.conf;
}
location ~ \.cgi$ {
root /usr/share/nagios/sbin;
rewrite ^/nagios/cgi-bin/(.*)\.cgi /$1.cgi break;
fastcgi_param AUTH_USER "nagios";
fastcgi_param REMOTE_USER "nagios";
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi.conf;
fastcgi_pass unix:/run/fcgiwrap.sock;
}
location /nagios {
alias /usr/share/nagios/share;
}
Это хорошо работает из локальной сети. Для доступа с внешних сайтов. У меня есть единственный общедоступный адрес ("newcompany.com"), и я хотел бы выполнить обратный прокси-сервер всего сайта Nagios (включая расположение CGI) на "https://newcompany.com/nagios". Я перепробовал все виды перезаписи и proxy_passes, ни один из которых не работает. Может ли кто-нибудь показать мне, как должна выглядеть директива местоположения" / nagios "на защищенном сервере newcompany.com для правильного обратного прокси-сервера на nagios server? Вот текущая (сломанная) версия вышестоящего сервера:
server {
server_name newcompany.com antergos1;
listen 80 default_server;
root /usr;
index index.php index.html index.htm;
access_log logs/default.access.log;
error_log logs/default.error.log;
location ~ \.(php|html|html|cgi)$ {
fastcgi_pass unix:/run/php-fpm/php-fpm.sock;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param AUTH_USER $remote_user;
fastcgi_param REMOTE_USER $remote_user;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_index index.php;
include fastcgi.conf;
}
location /nagios {
index index.php index.html index.htm;
proxy_pass http://nagios/;
}
Я не могу писать комментарии, но я считаю, что вам нужна косая черта в конце, потому что nginx считает, что «/ nagios» относится к одному точному пути, например, вы можете перенаправить «/site.css» на «/css.php?file=site» ", тогда как косая черта в конце относится ко всему каталогу и подкаталогам, а не только к указанному точному пути. В этом случае вы хотите, чтобы все, что находится в / nagios /, перенаправлялось, поэтому требуется косая черта в конце. Я рад, что ты нашел свое решение.
Оказывается, директива расположения proxy_passlocation /nagios {}
на вышестоящем сервере пришлось заменить на location /nagios/ {}
. Не понимаю почему, но обратный прокси сейчас работает нормально.