Reverse-Proxy
VPS 上的 Web 應用程序。如何讓它出現在子域上?
我正在使用個人 VPS(Ubuntu 20、Apache2)來託管 Web 應用程序。目前有 2 個靜態站點,site1.com 和 site2.org,都在工作。
我安裝了一個目前在埠 8065 上可用的應用程序,例如:
site2.org:8065
我的問題是,如何設置 Apache 以使應用程序出現在mm.site2.org 上?(帶有子域“mm”)。
我創建了一個這樣的配置文件:
# /etc/apache2/sites-available/mm.site2.org.conf <VirtualHost *:80> ServerName mm.site2.org ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined ProxyRequests Off <Proxy http://localhost:8065/*> Order deny,allow Allow from all </Proxy> ProxyPass / http://127.0.0.1:8065/ ProxyPassReverse / http://127.0.0.1:8065/ <Location /> Order allow,deny Allow from all </Location> </VirtualHost>
完成上述設置後,我執行了必要的命令來重新啟動服務,如下所示:
sudo a2ensite mm.site2.org.conf sudo systemctl reload apache2 sudo service apache2 restart
我還嘗試了
<Proxy ...>
Apache conf 文件中該行的變體,基於一些不同的來源,<Proxy *>
就像一些來源所建議的那樣簡單地使用。如果相關,我的 DNS 設置僅包含每個站點的兩條 A 記錄 (
@
和www
)。的輸出
sudo apache2ctl -S
是:AH00558: apache2: Could not reliably determine the server's fully qualified domain name, using 12.345.67.890. Set the 'ServerName' directive globally to suppress this message VirtualHost configuration: *:443 is a NameVirtualHost default server site1.com (/etc/apache2/sites-enabled/site1.com-le-ssl.conf:2) port 443 namevhost site1.com (/etc/apache2/sites-enabled/site1.com-le-ssl.conf:2) alias www.site1.com port 443 namevhost site2.org (/etc/apache2/sites-enabled/site2.org-le-ssl.conf:2) alias www.site2.org *:80 is a NameVirtualHost default server 12.345.67.890 (/etc/apache2/sites-enabled/000-default.conf:1) port 80 namevhost 12.345.67.890 (/etc/apache2/sites-enabled/000-default.conf:1) port 80 namevhost site1.com (/etc/apache2/sites-enabled/site1.com.conf:1) alias www.site1.com port 80 namevhost site2.org (/etc/apache2/sites-enabled/site2.org.conf:1) alias www.site2.org ServerRoot: "/etc/apache2" Main DocumentRoot: "/var/www/html" Main ErrorLog: "/var/log/apache2/error.log" Mutex default: dir="/var/run/apache2/" mechanism=default Mutex watchdog-callback: using_defaults Mutex rewrite-map: using_defaults Mutex ssl-stapling-refresh: using_defaults Mutex ssl-stapling: using_defaults Mutex proxy: using_defaults Mutex ssl-cache: using_defaults PidFile: "/var/run/apache2/apache2.pid" Define: DUMP_VHOSTS Define: DUMP_RUN_CFG User: name="www-data" id=33 Group: name="www-data" id=33
沒有運氣讓 webapp 出現在所需的子域上。
根據您寫的內容,我認為 DNS 配置不正確:
如果相關,我的 DNS 設置僅包含每個站點的兩條 A 記錄(@ 和 www)。
您必須為子域、地址:
mm.site2.org. A 12.345.67.890
或 cname(別名):添加 DNS RRmm.site2.org. CNAME www.site2.org.
。將所有子域定向到此伺服器 RR 名稱可能是萬用字元:*.site2.org. A 12.345.67.890
(CNAME RR 可能也足夠了)。(您似乎預計它已經像這樣工作了。)