
私のサイトは localhost 上にあるのに、アプリは で実行されています。ディレクトリを->localhost:2000
に指定したいのですが、アプリが get/post リクエストを行うときに問題が発生します。/projects/projectName
localhost:2000
たとえば、 で GET リクエストが行われた場合/run
、リクエストでは GET URL が として表示されhttps://localhost/run
、 404 が返されます。ここでの問題は次の 2 つです。
- ポート443にリダイレクトします。
- ポート 2000 は要求に応じて失われます。
更新: SSL をオフにしてみましたが、ポート 2000 はリクエスト時に失われます。理想的には、SSL でこれが機能するようにしたいと思います。
これら 2 つの問題は同じものである可能性がありますが、確信はありません。
どのように動作するかを確認するには、http://stevenshi.me:2000
動作するアプリケーションを参照してください。ご覧のとおり、GET および POST リクエストは上記の URL + に送信されます/foo
。
これが私の現在のApacheの設定ファイルです
<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 を作成するようにアプリケーションを構成する必要があります。