我有一个应用程序正在运行,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。