サーバーのサブドメインを介してホストされているサービスにアクセスするようにNginxを構成する方法を探しています。これらのサービスとNginxは、Docker-composeでインスタンス化されます。
つまり、jenkins.192.168.1.2
と入力すると、Nginxプロキシでリダイレクトされた192.168.1.2
でホストされているJenkinsにアクセスする必要があります。
私が現在持っているものの概要。それは機能しませんなしトップドメイン名なので、 play-with-docker.com で正常に機能しますが、たとえば192.168。 1.2。
server {
server_name jenkins.REVERSE_PROXY_DOMAIN_NAME;
location / {
proxy_pass http://jenkins:8080;
proxy_set_header Host $Host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Forwarded-Host $Host:$server_port;
proxy_set_header X-Forwarded-Server $Host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
私が欲しいものを見るには: https://github.com/Ivaprag/devtools-compose
私の全体的な目標は、クライアントのDNSサービスを変更せずにリモートDockerコンテナにアクセスすることです。
残念ながら、nginxはそのようなIPアドレスのサブドメインをサポートしていません。
クライアントのhostsファイルを変更する必要があります(これはやりたくないと言っていました)...
または次のようにリダイレクトするようにnginxを設定できます:
location /jenkins {
proxy_pass http://jenkins:8080;
...
}
location /other-container {
proxy_pass http://other-container:8080;
}
これにより、192.168.1.2/jenkins
でjenkinsにアクセスできるようになります
またはさまざまなポートを介してさまざまなコンテナを試して提供できます。例えば:
server {
listen 8081;
location / {
proxy_pass http://jenkins:8080;
...
}
}
server {
listen 8082;
location / {
proxy_pass http://other-container:8080;
...
}
}
そして、192.168.1.2:8081/
からjenkinsにアクセスします
すでにdocker-composeを使用している場合は、jwildernginx-proxyコンテナを使用することをお勧めします。
https://github.com/jwilder/nginx-proxy
これにより、定義されたnginxプロキシのバックエンドに無制限の数のWebサービスコンテナを追加できます。次に例を示します。
nginx-proxy:
image: jwilder/nginx-proxy
ports:
- "80:80"
- "443:443"
volumes:
- "/etc/nginx/vhost.d"
- "/usr/share/nginx/html"
- "/var/run/docker.sock:/tmp/docker.sock:ro"
- "nginx_certs:/etc/nginx/certs:rw"
nginx:
build:
context: ./docker/nginx/
dockerfile: Dockerfile
volumes_from:
- data
environment:
VIRTUAL_Host: www.Host1.com
nginx_2:
build:
context: ./docker/nginx_2/
dockerfile: Dockerfile
volumes_from:
- data
environment:
VIRTUAL_Host: www.Host2.com
Apache_1:
build:
context: ./docker/Apache_1/
dockerfile: Dockerfile
volumes_from:
- data
environment:
VIRTUAL_Host: www.Host3.com
Nginx-proxyは、実行中の他のコンテナーに関する情報を取得するためにHost docker sockファイルをマウントします。コンテナーのいずれかにenv変数VIRTUAL_Hostが設定されている場合は、それを構成に追加します。
1つのLXCコンテナー内の2つの仮想ホストに対して、nginx(ホスト)でサブドメインを構成しようとしていました。
それが私のために働いた方法:
Apache(コンテナー内)の場合、2つの仮想ホストを作成しました。1つはポート80に、もう1つはポート90に作成しました。
Apache2(コンテナ)でポート90を有効にするには、/ etc/Apache2 /ports.confの「Listen80」の下に「Listen90」という行を追加する必要がありました。
NGINX(ホストマシン)の場合、2つのドメインを構成しました。両方ともポート80で、/ etc/nginx/sites-availableに独立した.confファイルを作成します。/etc/nginx/sites-enabledへの各ファイルのシンボリックリンクを作成しました。
最初のNGINXmyfirstdomain.confファイルで、 http://my.contai.ner.ip:8 にリダイレクトします。
2番目のNGINXmyseconddomain.confファイルで、 http://my.contai.ner.ip:9 にリダイレクトします。
それは私にとってそれでした!