iT邦幫忙

1

Apache httpd 網頁伺服器的設定檔 ssl.conf

  • 分享至 

  • xImage

先說一下小弟管理Linux主機的方式
在安裝應用程式後
會將修改過與預設值不同的檔案
移至一個獨立目錄以便集中管理
再在原檔案所在位置做一個軟連結指到實際的檔案
這樣只需要備份這個獨立目錄即可
在重灌的時候也較能快速找到與預設值不一樣的地方進行修改。

現在發生一件奇怪有趣的事:
apache 伺服器 ssl.conf 檔的設定值需要修改
循往例把修改過的 ssl.conf 移至專區集中
再在原目錄位置做軟連結,一切準備就緒
重啟 apache 時,竟無法啟動!
把修改過的 ssl.conf 移回原位置,才能順利啟動
一樣是 apache 的 httpd.conf 則沒有這麼奇怪的限制
修改好檔案內容,設定軟連結,就可以正常使用了。

經過幾次的測試發現一個有趣的現象:
不能搬動 ssl.conf,但可以搬這檔案的上層目錄
把整個目錄、或是更上層的目錄搬走,再設軟連結,可以正常啟動 apache
唯獨不能直接搬動 ssl.conf 這個檔案?
請問各位大大先進們
是否知道這是什麼原因造成的?
有什麼方式可以解開這個魔咒嗎?

小弟的主要環境與檔案結構如下:
作業系統:RedHat 7.4
網站伺服器:Apache/2.4.6
採用 RHEL 標準的 rpm 安裝
原始目錄與檔案結構如下

/etc
|
├─httpd
| ├─conf
| | ├─httpd.conf
| | └─magic
| |
| ├─conf.d
| | ├─autoindex.conf
| | ├─ssl.conf  # 經測試,目錄下只有這個檔案不能搬家用軟連結,Why?
| | ├─welcome.conf

看更多先前的討論...收起先前的討論...
by2048 iT邦高手 1 級 ‧ 2023-08-30 08:40:04 檢舉
httpd.conf 裡面有這行
# Load config files from the config directory "/etc/httpd/conf.d".
#
Include conf.d/*.conf
所以 只能放在這,改掉這行就移位置
kjfang iT邦新手 5 級 ‧ 2023-08-30 14:39:00 檢舉
這沒道理呀!!
在/etc/httpd/conf.d 目錄下
同時存在有幾個設定檔
其他的檔案,例如:autoindex.conf、userdir.conf 都可以搬動後
使用軟連結
就唯獨 ssl.conf 不可以?
kjfang iT邦新手 5 級 ‧ 2023-08-31 17:57:44 檢舉
經過多次測試
在系統log(messages)裡面發現下面這條錯誤訊息

httpd: (98)Address already in use: AH00072: make_sock: could not bind to address [::]:443

是因為軟連結與實際檔案共用一個位置的問題嗎?
by2048 iT邦高手 1 級 ‧ 2023-09-02 20:44:46 檢舉
就這個錯誤訊息是指port 443被佔用
netstat -ano|findstr "443" 看被那個LISTENING佔用ID
再查 tasklist|findstr "佔用的ID"
kjfang iT邦新手 5 級 ‧ 2023-09-05 13:50:27 檢舉
試了幾次,發現:
ssl.conf 改成軟連結,造成httpd開不起來的時候,netstat查不到任何程式占用 443。(沒有程式使用 443 port)
將 ssl.conf 改回成實體檔案,正常啟動 httpd 後,用 netstat 查詢,結果如下
Proto Recv-Q Send-Q Local Address Foreign Address State Timer
tcp6 0 0 :::443 :::* LISTEN off (0.00/0/0)

看來這也不是 port 被占用的問題!
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 個回答

不明
【**此則訊息已被站方移除**】
1
Samuel
iT邦好手 1 級 ‧ 2023-08-30 06:20:35

Linux上HTTP Daemon簡稱httpd
是一款運行於網頁伺服器後台,等待傳入伺服器請求的軟體。
HTTP守護程序能自動回應伺服器請求,並使用HTTP協議傳送超文本及多媒體內容。

在不同版本的Linux作業系統會把各個設置項分在了不同的配置文件中。
在Redhat上
/etc/httpd/conf/httpd.conf
預設站台根目錄就在此檔中定義
關鍵字DocumentRoot "/var/www/html"

若有更改可以測試config配置有沒有異常
下這個指令會輸出有沒有哪行錯誤

apachectl configtest

在Ubuntu上
/etc/apache2/apache2.conf
預設站台根目錄 關鍵字DocumentRoot
如果在此檔找不到DocumentRoot關鍵字
那就會是在/etc/apache2/sites-available/000-default.conf (假設你沒有用虛擬主機多台情況下預設配置檔案)

Apache在啟動時會自動讀取這個文件的配置信息,而其他的一些配置文件,如httpd.conf等,則是通過Include指令包含進來。在apache2.conf中可以找到這些Include段落。

# Include module configuration:
IncludeOptional mods-enabled/*.load
IncludeOptional mods-enabled/*.conf

# Include list of ports to listen on
Include ports.conf

# Include generic snippets of statements
IncludeOptional conf-enabled/*.conf

# Include the virtual host configurations:
IncludeOptional sites-enabled/*.conf

Linux Ubuntu Apache上的管理配置筆記
https://coolmandiary.blogspot.com/2023/06/linux-ubuntu-apache.html
Apache管理常規操作整理2
https://coolmandiary.blogspot.com/2023/06/apache2.html

我要發表回答

立即登入回答