Apache-2.4
停用 systemd 套接字啟動的預設埠
我有一個在 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?預設配置儲存在哪裡?
您可以使用以下命令列出 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
舊版本)說允許多次指定各種設置,在這種情況下,解釋取決於設置。通常,多個設置形成一個列表,並設置為空值“重置”,這意味著先前的分配被忽略。