私のホームネットワークのWebサーバーの横にgitlabサーバーが実行されています。私のWebサーバーからいくつかのドメインでApache2を実行します。 example.comもその一つです。私の目標は、ユーザーがexample.com/gitlabまたはgitlab.example.comにアクセスしたときにgitlabログインページを取得することです。実際、リダイレクトが特定のURLまたはサブドメインで発生するかどうかは関係ありません。私は多くのことを試しましたが、それらのどれも私には役に立ちませんでした(おそらく私は間違っていたかもしれません)。
私はまた、次の関連フォーラムの記事を読んだ。
- Apache仮想ホストを使用してパススルーポートを維持する内部IPにサブドメインをリダイレクトします。
- Apacheの名前ベースの仮想ホストを使用して内部IPにリダイレクトする
- https://www.linuxquestions.org/questions/linux-server-73/apache-redirect-to-internal-server-919321/
- ...
しかし、私は現在実行中のものがありません。
私のもの基本プロファイル常にポート80をポート443(HTTPS)にリダイレクトするように設定します。
<VirtualHost *:80>
ServerName example.com
ServerAlias www.example.com
Redirect permanent / https://www.example.com/
[...]
</VirtualHost>
だからこれは私です。example.com.conf今後:
<VirtualHost *:443>
ServerName example.com
ServerAlias www.example.com
DocumentRoot /var/www/html/example.com
SSLEngine on
<FilesMatch "\.(cgi|shtml|phtml|php)$">
SSLOptions +StdEnvVars
</FilesMatch>
<Directory /usr/lib/cgi-bin>
SSLOptions +StdEnvVars
</Directory>
Include /etc/letsencrypt/options-ssl-apache.conf
SSLCertificateFile /etc/letsencrypt/live/www.example.com/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/www.example.com/privkey.pem
</VirtualHost>
まずリダイレクトを試みます。URLから。私は以下を追加しました:
ProxyRequests Off
ProxyPass /gitlab http://192.168.0.115:80/
ProxyPassReverse /gitlab http://192.168.0.115:80/
これは正しく動作しませんが、URLを入力すると"404要求されたURL /users/sign_inがこのサーバーに見つかりません。"。 '/users/sign_in'は私のgitlabサーバーのログインページパスなので、少なくとも何かが動作しているようです。私にとって奇妙なことは、ルートを内部IPにリダイレクトすると機能することです。
ProxyRequests Off
ProxyPass / http://192.168.0.113:80/
ProxyPassReverse / http://192.168.0.113:80/
動作しますが、今は実際のウェブサイトにアクセスできなくなります。
その後、リダイレクトを試みます。サブドメインで。私は以下を追加しました:
<VirtualHost *:443>
ServerName gitlab.example.com
ProxyPass / http://192.168.0.113/
ProxyPassReverse / http://192.168.0.113/
</VirtualHost>
しかし、私は受け取る「サイトにアクセスできません」。私はサブドメインも運営していません。
答え1
/ gitlabビットを削除するには、mod_rewriteを使用する必要があります。それは次のとおりです。
rewriteBase "/gitlab"
rewriteRule "^gitlab/(.*)" "http:/192.168.0.113/$1" [P]