nginx添加以下server后还是可以通过ip访问 server { listen 8888 default; return 500; }
时间: 2024-05-06 21:15:59 浏览: 45
是的,因为你没有限制该server只能通过特定的域名访问。可以通过添加以下代码实现限制:
```
server {
listen 8888 default;
server_name _; # 匹配所有域名
return 500;
}
```
这样就会限制只能通过域名访问该server。
相关问题
nginx添加以下server后还是可以通过ip访问网站server { listen 8888 default_server; server_name _; access_log off; return 403; }
是的,即使您添加了这个server,仍然可以通过IP地址访问您的网站。这是因为您的server块没有指定具体的域名,而是使用了通配符"_"来代表所有域名。因此,当您使用IP地址访问网站时,Nginx会将其视为没有指定域名的请求,并将该请求路由到此server块。如果您想禁止通过IP地址访问您的网站,可以在server块中指定您的域名,如下所示:
```
server {
listen 8888 default_server;
server_name example.com;
access_log off;
return 403;
}
```
这样,当通过IP地址访问您的网站时,Nginx会找不到与之匹配的server块,并返回404错误。
nginx 多个https,通过ip访问
可以使用 nginx 的 SNI (Server Name Indication) 功能来实现在同一个 IP 地址下使用多个 HTTPS 证书。SNI 是一个 TLS 扩展协议,它允许客户端在 TLS 握手时告诉服务器它想要访问的域名是什么,从而使服务器能够选择正确的证书来提供。
具体实现步骤如下:
1. 在 nginx 配置文件中添加以下代码段:
```
server {
listen 443 ssl;
server_name example.com;
ssl_certificate /path/to/example.com.crt;
ssl_certificate_key /path/to/example.com.key;
...
}
server {
listen 443 ssl;
server_name example2.com;
ssl_certificate /path/to/example2.com.crt;
ssl_certificate_key /path/to/example2.com.key;
...
}
```
2. 在 DNS 中为每个域名设置 A 记录,指向 nginx 服务器的 IP 地址。
3. 在客户端浏览器中访问 https://nginx服务器IP地址 将会返回 nginx 默认虚拟主机的证书和内容。要访问指定的域名,需要在浏览器中输入对应的域名,例如 https://example.com 或 https://example2.com。
4. 如果需要在默认虚拟主机中禁止 HTTPS 访问,可以在默认虚拟主机的配置中添加以下代码:
```
server {
listen 443 default_server ssl;
server_name _;
return 444;
}
```
这将返回一个空响应,关闭连接。
需要注意的是,SNI 只支持较新的浏览器和操作系统,如果客户端不支持 SNI,将会出现证书错误或无法访问的情况。