ここでは運用よりも開発が中心です。状況: podman を使用していくつかのアプリケーションを実行しているホーム サーバー (fedora) があります。いくつかはデータベース サービスであり、さまざまなポートを使用します。これは NGINX で動作しますか?
- を通じて個人サイトをホストします
domain.dev
。それは に存在しますlocalhost:8080
。 - を通じて Fedora コックピットをホストします
cocking.domain.dev
。それは存続しますlocalhost:9090
。 - 他のアプリケーションは、独自のサブドメインを通じて、
db.domain.dev:30001
に存在するさまざまなポートを使用してホストされますlocalhost:30001
。 全部で 15 個のポートを使用していると思います。
コックピットはできると思います(Webソケットを使用します)
map $http_upgrade $connection_upgrade {
default upgrade;
'' close;
}
upstream websocket {
server localhost:9090;
}
server {
server_name cockpit.domain.dev;
location / {
proxy_pass http://websocket;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection $connection_upgrade;
proxy_set_header Origin https://$host;
}
}
location /
ドメインに別のものを追加するだけでいいのでしょうかdomain.dev
?
モデムを開いて必要なポートをすべて渡すことができます。可能であれば、certbot、google domains、google dnsについて後で質問します。できないそれを機能させましょう。
答え1
まず、nginx は HTTP プロキシであるため、リクエストをプロキシできるのは HTTP(S) プロトコル経由のみであることに留意してください。
次に、OS が 2 つの異なるアプリケーションとプロセスが同じポートをバインドすることを許可しなくなったら、別のポートをローカルホスト ポートにマップする必要があると思います。
以下の設定は機能するはずです (ポート 18080 を localhost:8080 に、ポート 19090 を localhost:9090 にマッピングしていることに注意してください)。
server {
listen 18080;
server_name domain.dev;
access_log /var/log/nginx/domain.dev-access.log;
error_log /var/log/nginx/domain.dev-error.log error;
location / {
proxy_pass http://localhost:8080;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
server {
listen 19090;
server_name cockpit.domain.dev;
access_log /var/log/nginx/cockpit.domain.dev-access.log;
error_log /var/log/nginx/cockpit.domain.dev-error.log error;
location / {
proxy_pass http://localhost:9090;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}