Ubuntu

訪問 nginx 狀態時繞過本地主機上的 SSL

  • October 10, 2014

我有一個位置/nginx_status,昨晚我安裝了 SSL 證書。

server {
   listen 443;
   ...
   location /nginx_status {
       stub_status on;
       access_log off;
       allow 127.0.0.1;
       deny all;
   }
}

當它仍在埠 80 上時,這是在進行預證書安裝。現在,我已經進行了重定向,以將 www.domain.tld 和 domain.tld 流量重定向到 https,例如

server {
       listen 80;
       server_name domain.tld;
       return 301 https://domain.tld$request_uri;
}

server {
       listen 80;
       server_name www.domain.tld;
       return 301 https://domain.tld$request_uri;
}

我正在使用 graphdat-relay 來監視 nginx 統計資訊,現在curl http://127.0.0.1/nginx_status 只獲取重定向頁面,例如

<html>
<head><title>301 Moved Permanently</title></head>
<body bgcolor="white">
<center><h1>301 Moved Permanently</h1></center>
<hr><center>nginx/1.6.2</center>
</body>
</html>

如何告訴 nginx 繞過 SSL 並僅在本地允許 /nginx_status ?

為此添加一個僅偵聽本地主機的特殊伺服器。

server {
   listen 127.0.0.1:80;
   listen [::1]:80;
   ...
   location /nginx_status {
       stub_status on;
       access_log off;
       allow 127.0.0.1;
       deny all;
   }
}

引用自:https://serverfault.com/questions/635056