我有一个在 CentOS 8.2 上运行的 Apache 服务器,其套接字由 systemd 套接字激活管理。但我不希望它监听默认端口 80,因为我想在此端口上运行 Nginx 反向代理。这是当前的 systemd 套接字配置:
root@server6:~# systemctl status httpd.socket
● httpd.socket - Apache httpd Server Socket
Loaded: loaded (/usr/lib/systemd/system/httpd.socket; enabled; vendor preset: disabled)
Drop-In: /etc/systemd/system/httpd.socket.d
└─20-redir8016.conf, 30-listen8017ssl.conf, override.conf
Active: active (running) since Fri 2020-11-20 14:45:13 UTC; 1 weeks 0 days ago
Docs: man:httpd.socket(8)
Listen: [::]:80 (Stream)
[::]:8001 (Stream)
[::]:8002 (Stream)
[::]:8003 (Stream)
Tasks: 0 (limit: 820374)
Memory: 0B
CGroup: /system.slice/httpd.socket
如您所见,端口 80 已启用。这是默认设置。其他端口是特意添加的。的手册页httpd.socket(8)
仅描述如何添加其他端口,而没有描述如何删除默认端口。的配置文件中未配置端口 80 /etc/httpd
。
我如何才能在此处停用端口 80?默认配置存储在哪里?
答案1
您可以使用以下命令列出 systemd 用于套接字的文件:
$ systemctl cat httpd.socket
在我的系统上显示如下(为简洁起见删除了一些行):
# /usr/lib/systemd/system/httpd.socket
[Unit]
Description=Apache httpd Server Socket
[Socket]
ListenStream=80
[Install]
WantedBy=sockets.target
# /usr/lib/systemd/system/httpd.socket.d/10-listen443.conf
[Socket]
ListenStream=443
您可以看到在我的系统上使用 2 个命名文件来监听端口 80 和 443。您可以使用sudo systemctl edit httpd.socket
来添加更多配置。实际上取消现有配置,您需要使用标准 systemd 方法输入空值对于关键字,即在本例中:ListenStream=
,后跟任何想要的附加值:
[Socket]
# cancel existing port 80 (and 443)
ListenStream=
ListenStream=8001
ListenStream=8002
ListenStream=8003
man systemd.syntax
(或man systemd.unit
旧版本)说
允许多次指定各种设置,在这种情况下解释取决于设置。通常,多个设置会形成一个列表,设置为空值会“重置”,这意味着先前的分配将被忽略。