
我有一個應用程式正在運行,localhost:2000
而我的網站位於本地主機上。我想指出目錄/projects/projectName
-> localhost:2000
。然而,當應用程式發出 get/post 請求時,問題就出現了。
例如,如果在 發出 GET 請求/run
,則該請求將 GET URL 顯示為https://localhost/run
並傳回 404。
- 它重定向到連接埠 443;和
- 連接埠 2000 現在根據請求遺失。
更新:我嘗試關閉 SSL,但連接埠 2000 仍然根據請求丟失。理想情況下,我希望它能夠與 SSL 一起使用。
這兩個問題可能是同一個問題,但我不確定。
要了解它應該如何運作,http://stevenshi.me:2000
就是工作應用程式。正如你所看到的,GET 和 POST 請求都會轉到上面的 url + /foo
。
這是我目前的 apache conf 文件
<VirtualHost *:80>
RewriteEngine on
RewriteCond %{SERVER_PORT} !^443$
RewriteRule ^/(.*) https://%{HTTP_HOST}/$1 [NC,R=301,L]
ServerAdmin [email protected]
ServerName stevenshi.me
ServerAlias www.stevenshi.me
DocumentRoot /var/www/html
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
<IfModule mod_ssl.c>
<VirtualHost *:443>
ServerAdmin [email protected]
ServerName stevenshi.me:443
ServerAlias www.stevenshi.me
DocumentRoot /var/www/html
SSLEngine on
SSLProtocol all -SSLv2
SSLCipherSuite ALL:!ADH:!EXPORT:!SSLv2:RC4+RSA:+HIGH:+MEDIUM
SSLCertificateFile /etc/apache2/ssl/ssl.crt
SSLCertificateKeyFile /etc/apache2/ssl/private.key
SSLCertificateChainFile /etc/apache2/ssl/sub.class1.server.ca.pem
ProxyRequests on
ProxyPreserveHost on
<Proxy *>
Order deny,allow
Allow from localhost
</Proxy>
RewriteEngine on
RewriteRule ^/projects/CS32Brewer/(.*)$ http://localhost:2000/$1 [
#ProxyPass /projects/CS32Brewer/ http://localhost:2000/
ProxyPassReverse /projects/CS32Brewer/ http://localhost:2000/
#ProxyPass /projects/Maps http://locahost:2001
#ProxyPassReverse /projects/Maps http://localhost:2001
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
</IfModule>
答案1
您必須使用 mod_rewrite 進行重寫,或設定應用程式以建立正確的 url。