在云主机上关闭网站访问,有多种方法,具体取决于您想达到的效果(临时关闭、永久关闭、仅限制特定访问等)以及您使用的Web服务器软件。
下面我将分场景和服务器类型(Nginx/Apache)为您详细介绍。
关闭网站访问的本质是让Web服务器(如Nginx, Apache)停止对HTTP/HTTPS请求的响应,主要有以下几种途径:
1、停止Web服务:直接关停服务器软件。
2、修改服务配置:让服务器不监听80/443端口,或将网站配置指向一个无效的路径。
3、使用防火墙拦截:在系统层面阻断外部对80/443端口的访问。
4、修改域名解析:将域名指向别处(如维护页面),但这需要较长时间生效,且对直接通过IP访问的无效。
方法一:通过防火墙关闭(推荐,最灵活安全)
这是最常用和推荐的方法,可以在不影响服务器其他服务的情况下,精确控制访问。
1. 使用系统防火墙(如firewalld或ufw)
CentOS/RHEL/Fedora (使用firewalld)
# 查看当前放行的服务/端口
sudo firewall-cmd --list-all
# 永久移除HTTP和HTTPS服务(端口80和443)
sudo firewall-cmd --permanent --remove-service=http
sudo firewall-cmd --permanent --remove-service=https
# 或直接移除端口
# sudo firewall-cmd --permanent --remove-port=80/tcp
# sudo firewall-cmd --permanent --remove-port=443/tcp
# 重新加载防火墙使配置生效
sudo firewall-cmd --reloadUbuntu/Debian (使用ufw)
# 查看状态
sudo ufw status
# 拒绝80和443端口的入站连接
sudo ufw deny 80/tcp
sudo ufw deny 443/tcp
# 如果需要,重新加载(ufw规则立即生效)
sudo ufw reload2. 使用云服务商的安全组/防火墙
* 这是最重要的一步!云主机(如阿里云、腾讯云、AWS、华为云)都有安全组或网络ACL功能。
操作:登录到云控制台,找到您的云主机实例,进入其安全组配置。
修改规则:找到入方向规则,将允许(Accept)80和443端口的规则修改为拒绝(Deny) 或直接删除该条规则。
优点:规则在云端网络边界生效,不消耗主机资源,更加安全高效。
这种方法会停止整个Web服务器软件,该软件托管的所有网站都会无法访问。
1. 对于Nginx
# 停止Nginx服务 sudo systemctl stop nginx # 禁止开机自启(如果永久关闭) # sudo systemctl disable nginx # 查看状态 sudo systemctl status nginx
2. 对于Apache
# 停止Apache服务(在CentOS/RHEL上服务名可能是httpd) sudo systemctl stop apache2 # Ubuntu/Debian sudo systemctl stop httpd # CentOS/RHEL/Fedora # 禁止开机自启 # sudo systemctl disable apache2 # 查看状态 sudo systemctl status apache2
重启服务的命令是sudo systemctl start nginx/apache2/httpd。
方法三:修改Web服务器配置文件(针对性关闭特定网站)
如果您在同一个Web服务器上托管了多个网站,可以只关闭其中一个。
1. 对于Nginx
* 网站配置文件通常在/etc/nginx/conf.d/ 或/etc/nginx/sites-available/ 目录下。
方法A:重命名或移除配置文件
# 假设网站配置文件是 /etc/nginx/conf.d/mysite.conf
sudo mv /etc/nginx/conf.d/mysite.conf /etc/nginx/conf.d/mysite.conf.bak方法B:在配置文件中监听其他端口(如改为监听8080)
编辑配置文件,将listen 80; 和listen 443 ssl; 行注释或修改。
# 修改前
server {
listen 80;
server_name www.example.com;
...
}
# 修改后 - 方法1:注释掉listen行
server {
# listen 80;
server_name www.example.com;
...
}
# 修改后 - 方法2:改为监听本地端口,外部无法访问
server {
listen 127.0.0.1:8080;
server_name www.example.com;
...
}重载Nginx配置(不中断服务其他网站):
sudo nginx -s reload
# 或
sudo systemctl reload nginx2. 对于Apache
* 网站配置文件可能在/etc/apache2/sites-available/ (Ubuntu) 或/etc/httpd/conf.d/ (CentOS)。
禁用网站配置
# Ubuntu/Debian
sudo a2dissite your-site-config.conf
sudo systemctl reload apache2
# CentOS/RHEL (通常直接删除链接或重命名文件)
sudo rm /etc/httpd/conf.d/your-site-config.conf
sudo systemctl reload httpd如果您希望告知用户网站正在维护,可以创建一个维护页面。
1、 在网站根目录(如/var/www/html)创建一个maintenance.html 页面。
2、 修改Nginx/Apache的默认网站或目标网站的配置,将其根目录指向这个维护页面文件,或设置重定向。
3、 重载Web服务器配置。
Nginx配置示例(直接返回维护状态码503和一个页面):
server {
listen 80;
server_name www.example.com;
location / {
# 返回503状态码并显示自定义页面
return 503;
}
error_page 503 /maintenance.html;
location = /maintenance.html {
root /usr/share/nginx/html; # 维护页面存放路径
internal;
}
}| 场景 | 推荐方法 | 说明 |
| 紧急关闭,立即生效 | 云平台安全组 | 在控制台操作,最快最彻底,不影响主机内部。 |
| 临时维护,稍后恢复 | 系统防火墙 或停止Web服务 | sudo systemctl stop nginx/httpd 或firewall-cmd --remove-service=http。 |
| 仅关闭特定网站 | 修改Web服务器配置 | 重命名站点配置文件并重载服务。 |
| 显示友好维护提示 | 放置维护页面 | 配置Web服务器返回503和自定义HTML页面。 |
| 永久关闭网站 | 卸载Web服务器 | sudo apt remove nginx 或sudo yum remove httpd。 |
操作前重要提醒:
1、备份:修改任何配置文件前,先备份。
2、权限:使用sudo 或 root 用户执行命令。
3、验证:修改后,务必从外部网络(如你的手机4G网络)访问测试,确认是否已关闭。
4、谨慎操作:如果通过SSH连接到云主机,不要在修改防火墙时错误地封禁了SSH端口(默认22),否则会失去连接,云控制台的“安全组”是更安全的网络层控制方式。
您可以根据自己的具体需求,选择最合适的方法。
文章摘自:https://idc.huochengrm.cn/zj/24824.html
评论