Nginx-拒绝访问IP地址(HTTPS端口443)



是否可以使用IP地址阻止HTTPS?

这样你就无法使用HTTPS端口443的IP地址访问我的网站。

提前感谢!

在我自己搜索解决方案时发现了这个线程。下面链接的网站发布了一个解决方案来拒绝任何未配置的ssl请求。它很好地满足了我的需要。

https://www.zacharyschneider.ca/2020/03/nginx-block-direct-ip-access/

为了便于访问,包含了代码块,所有这些都归功于zacharyschneider.ca的此解决方案。

server {
listen      443 ssl default_server;
listen [::]:443 ssl default_server;
# Disable logging
error_log  /dev/null;
access_log off;
# Snakeoil TLS to appease Nginx
ssl_certificate     /etc/ssl/certs/ssl-cert-snakeoil.pem;
ssl_certificate_key /etc/ssl/private/ssl-cert-snakeoil.key;
ssl_stapling        off;
ssl_ciphers         NULL;
# Close the connection without sending a response
return 444;
}

在Nginx配置中只能指定一个侦听端口。应用程序将仅由Nginx侦听端口公开

只需添加listen to 443并用您的IP地址更改server_name,它看起来像这样:

server {
listen 443;
server_name your_ip_address;
return 403;
}

不要忘记检查语法是否成功:sudo nginx -t

并重新加载您的Nginx服务器:sudo systemctl reload nginx

当有人试图使用IP:80和IP:443时,您可以拒绝未知域的所有连接并拒绝连接。

HTTP响应(80(:连接已关闭,没有响应。HTTPS响应(443(:拒绝SSL连接。

将此配置包含在/etc/nginx/nginx.conf:中

# /etc/nginx/sites-enabled/default_server.conf
# HTTP:80 = catch-all server block, resulting in a 444 response for unknown domains.
# HTTPS:443 = catch-all server block, resulting in reject SSL connection for unknown domains.
server {
listen 80 default_server;
listen [::]:80 default_server;
server_name "_";
return 444; # Connection closed without response
}
server {
listen 443 default_server;
listen [::]:443 default_server;
server_name "_";
ssl_reject_handshake on; # Reject SSL connection
}

最新更新