我想限制對我網站的訪問。我只希望通過 domain.com 或www.domain.com訪問它。但是目前我可以通過 https://ipaddress 訪問它
我在可用的站點中創建了一個服務器塊,如下所示:我嘗試了一些事情,但不斷打破它可能應該從我讀過的內容中回傳 444,但不確定把它放在哪里
server {
server_name your-domain www.your-domain;
location / {
proxy_pass http://localhost:5000;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection keep-alive;
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
listen [::]:443 ssl ipv6only=on; # managed by Certbot
listen 443 ssl; # managed by Certbot
ssl_certificate /etc/letsencrypt/live/your-domain/fullchain.pem; # managed by Certbot
ssl_certificate_key /etc/letsencrypt/live/your-domain/privkey.pem; # managed by Certbot
include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot
}
server {
if ($host = www.your-domain) {
return 301 https://$host$request_uri;
} # managed by Certbot
if ($host = your-domain) {
return 301 https://$host$request_uri;
} # managed by Certbot
listen 80;
listen [::]:80;
server_name your-domain www.your-domain;
return 404; # managed by Certbot
}
uj5u.com熱心網友回復:
對于每個配置,nginx 將一個(或多個)服務器塊視為默認塊。默認服務器塊將用于處理到達偵聽埠的任何請求,其中HostHTTP 標頭與server_name任何其他定義的服務器塊(或Host根本缺少標頭)中的指令指定的任何服務器名稱不匹配。您可以使用指令的default_server標志顯式指定這樣的服務器塊,listen或者在該埠上偵聽的第一個服務器塊將用作默認值。此行為記錄在如何 nginx 處理請求官方檔案頁面和此 SO 答案中描述了多宿主系統的一些額外細節(好吧,考慮到lo環回介面,任何系統都可以算作多宿主系統)。
因此,要明確定義默認服務器,您可以使用以下內容:
server {
listen 80 default_server;
listen [::]:80 default_server;
listen 443 default_server ssl;
listen [::]:443 default_server ssl;
ssl_certificate /some/path/any.crt;
ssl_certificate_key /some/path/any.key;
return 444; # silently drop the connection
# or you can define some landing page here
}
如果您使用單個組態檔而不是多個 vhost 定義檔案,您可以將此服務器塊作為第一個并省略這些default_server關鍵字(但我寧愿不這樣做,只是為了可靠性)。
上述配置將需要有效的證書/密鑰對。您不需要公開您提供的域證書(此外,通常您不希望攻擊者看到您的服務器上托管的域),因為任何自簽名證書就足夠了。要在一行中生成一對自簽名密鑰/證書,您可以使用以下命令:
openssl req -nodes -new -x509 -subj "/CN=localhost" -keyout /some/path/any.key -out /some/path/any.crt
此外,使用上述默認服務器塊,您可以從配置中大大簡化第二個服務器塊:
server {
listen 80;
listen [::]:80;
server_name your-domain www.your-domain;
return 301 https://$host$request_uri;
# or if you want to redirect any request to some particular domain, you can explicitly use
# 'return 301 https://your-domain$request_uri;' or 'return 301 https://www.your-domain$request_uri;'
}
除了 foryour-domain或www.your-domain域之外,不會再有其他請求與它一起提供(將為任何其他請求選擇默認服務器塊)。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/347876.html
標籤:nginx
上一篇:洗掉url末尾的所有斜杠
