Nagios由具有以下configuration的名为“nagios”的nginx虚拟服务器提供服务:
# 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,没有一个炒锅。 有人可以告诉我如何安全的“newcompany.com”服务器内的位置指令“/ nagios”应该看起来像为了正确地反向代理到nagios服务器? 以下是上游服务器的当前(损坏)版本:
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”指的是一个确切的path,例如,你可以转发“/site.css”到“/css.php?file=site “,而最后的斜杠是指整个目录和子目录,而不仅仅是指定的确切path。 在这种情况下,您希望/ nagios /下的所有内容都被转发,因此需要结尾的斜杠。 我很高兴你find你的解决scheme。
事实certificate,上游服务器中的proxy_pass位置指令location /nagios {}必须更改为location /nagios/ {} 。 我不明白为什么,但反向代理现在工作正常。