flyzy博客
分享便宜VPS与网络优惠
搬瓦工

请教下:如何用nginx 禁止ip直接访问网站,只允许域名访问

百度出来都是一样的答案
server {
   listen   80 default;   
   server_name _;   
    return 403;  
}
在结尾加这个server,nginx配置文件直接报错

陕西省网友说:server {         listen 80 default_server;         listen [::]:80 default_server;         listen 443 default_server;         listen [::]:443 default_server;         ssl_reject_handshake on;         server_name _;         return 444; }复制代码

江西省网友说:默认nginx配置域名就好了

贵州省网友说:请问我如何百度搜索?

浙江省网友说:用的宝塔吗?

湖南省网友说:server {   listen       80;   server_name  123.123.123.123(改成你的IP地址);   return 403; }复制代码

这样试试

吉林省网友说:正常绑定域名的,ip不能访问,你的是反代项目吗,反代的话不放行反代端口就行了

青海省网友说:你这个元老啊

云南省网友说:给你的服务器 IP 自签一个证书,也可以用在线网站:https://myssl.com/create_test_cert.html
如果用在线网站的话,域名写 IP,有效期选 5 年,生成后要把根证书和证书内容合并到一个文件中。
然后创建一个虚拟主机,配置文件大概就是这样(记得改示例中的证书文件和 IP):server {     listen 80 default_server;     listen 443 ssl http2 default_server;     server_name 你的IP;     ssl_certificate /etc/nginx/conf.d/default.pem;     ssl_certificate_key /etc/nginx/conf.d/defaultkey.pem;     ssl_protocols TLSv1.2 TLSv1.3;     return 444; } 复制代码
这样访问 https://ip 的话,就不会暴露其他网站的证书了,同时也会被直接断开链接(444 状态码最省资源)
也可以加上这两行,限制该虚拟主机只允许服务器内部访问。allow 127.0.0.0/8; deny  all;复制代码

或者你可以看一下 Nginx 官方文档,不需要自签证书也可能实现一样效果:
https://nginx.org/en/docs/http/ngx_http_ssl_module.html#ssl_reject_handshake

青海省网友说:既然报错,你就要说具体的报错信息
不然谁知道呢

江苏省网友说:return 444;

赞(0) 打赏
关注我们
未经允许不得转载:flyzy博客 » 请教下:如何用nginx 禁止ip直接访问网站,只允许域名访问
分享到: 更多 (0)

这是一种鼓励

支付宝扫一扫打赏

微信扫一扫打赏