Mac設定Apache2(httpd)筆記 + Docker Proxy + SSL
Mac 內建就有 Apache2 ,因此不用使用 brew 再裝一次
可以先用檢查所有設定檔的位置
sudo apachectl -V
Server version: Apache/2.4.58 (Unix)
Server built: Apr 13 2024 11:53:17
Server's Module Magic Number: 20120211:129
Server loaded: APR 1.5.2, APR-UTIL 1.5.4, PCRE 8.44 2020-02-12
Compiled using: APR 1.5.2, APR-UTIL 1.5.4, PCRE 8.44 2020-02-12
Architecture: 64-bit
Server MPM: prefork
threaded: no
forked: yes (variable process count)
Server compiled with....
-D APR_HAS_SENDFILE
-D APR_HAS_MMAP
-D APR_HAVE_IPV6 (IPv4-mapped addresses enabled)
-D APR_USE_FLOCK_SERIALIZE
-D APR_USE_PTHREAD_SERIALIZE
-D SINGLE_LISTEN_UNSERIALIZED_ACCEPT
-D APR_HAS_OTHER_CHILD
-D AP_HAVE_RELIABLE_PIPED_LOGS
-D DYNAMIC_MODULE_LIMIT=256
-D HTTPD_ROOT="/usr"
-D SUEXEC_BIN="/usr/bin/suexec"
-D DEFAULT_PIDLOG="/private/var/run/httpd.pid"
-D DEFAULT_SCOREBOARD="logs/apache_runtime_status"
-D DEFAULT_ERRORLOG="logs/error_log"
-D AP_TYPES_CONFIG_FILE="/private/etc/apache2/mime.types"
-D SERVER_CONFIG_FILE="/private/etc/apache2/httpd.conf"
接著要編輯
/private/etc/apache2/httpd.conf
由於我是要用 proxy 及 ssl 相關的module,至少要打開下列這幾個
LoadModule rewrite_module libexec/apache2/mod_rewrite.so
LoadModule ssl_module libexec/apache2/mod_ssl.so
LoadModule proxy_module libexec/apache2/mod_proxy.so
LoadModule proxy_http_module libexec/apache2/mod_proxy_http.so
啟用 vhosts
sudo vi /private/etc/apache2/extra/httpd-vhosts.conf
原本預設值可刪掉 VirtualHost ,不然會跑失敗
由於我用docker架了一個WordPress使用8080 port,因此就這樣寫
<VirtualHost *:80>
ServerName mac.mysite.com
ProxyPreserveHost On
ProxyPass / http://127.0.0.1:8080/
ProxyPassReverse / http://127.0.0.1:8080/
ErrorLog "/opt/homebrew/var/log/mac.mysite.com-error_log"
CustomLog "/opt/homebrew/var/log/mac.mysite.com-access_log" common
</VirtualHost>
接著再使用 certbot 裝 ssl
brew install certbot
brew install python@3.11
pip install certbot-apache
sudo certbot --apache -d mac.mysite.com
成功的話就會看到 httpd-vhosts.conf 支援 ssl了
<VirtualHost *:80>
ServerName mac.mysite.com
ProxyPreserveHost On
ProxyPass / http://127.0.0.1:8080/
ProxyPassReverse / http://127.0.0.1:8080/
ErrorLog "/opt/homebrew/var/log/mac.mysite.com-error_log"
CustomLog "/opt/homebrew/var/log/mac.mysite.com-access_log" common
RewriteEngine on
RewriteCond %{SERVER_NAME} =mac.mysite.com
RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,NE,R=permanent]
</VirtualHost>
使用 https://mac.mysite.com 即可進入網站
Docker 在建置時可以使用設定 port 再搭配 proxy 及設定 dns ,即可架設多個站玩多種服務
檢查設定檔
sudo apachectl configtest
重新啟動
sudo apachectl restart
我在設定時由於用brew裝了nginx及apache,導致80 port有問題
sudo lsof -i :80
檢查 80 port 有什麼佔住再陸續刪掉
留言