web-dev-qa-db-ja.com

Nginxプロキシ1つのポートから複数のポート

ファイアウォールで開いているポートが1つだけで、複数のサービスが実行されています。 URIに基づくリクエストを別のアプリケーションにリダイレクトしたい。たとえば、ポート8440で実行されている1つのアプリケーションにリダイレクトされるhttp:example.com:8443/test1にアクセスしていて、ポート80で実行されているマスターnginxプロセスにリダイレクトされるhttp:example.com:8443/test1にアクセスしている場合

私の構成ファイルは次のようになります:

server {
    listen      127.0.0.1:8443;
    location  /test1{
        proxy_pass  http://127.0.0.1:8230;
    }
}
server {
    listen      127.0.0.1:8443;
    client_max_body_size 100m;
    location  /test2{
        proxy_pass  http://127.0.0.1:80; #Nginx master webserver port
    }
}

しかし、localhost:8443/test2にアクセスすると、403 Forbiddenただし、test1のリダイレクトポートが80の場合、次のようになります。

server {
    listen      127.0.0.1:8443;
    location  /test1{
        proxy_pass  http://127.0.0.1:80;
    }
}

それは働いています。

2
Lucian

どちらも127.0.0.1:8443でリッスンしているため、サーバーは1つだけにする必要があります。次に、そのサーバー内に2つのロケーションブロックがあります。次に例を示します。

server {
    listen      127.0.0.1:8443;
    client_max_body_size 100m;

    location  /test1 {
        proxy_pass  http://127.0.0.1:8230;
    }


    location  /test2 {
        proxy_pass  http://127.0.0.1:80; #Nginx master webserver port
    }
}

また、トラフィックをリダイレクトするのではなく、プロキシしていることに注意してください。 /test2もポート80でサーバーに直接渡される可能性が高いため、アプリケーションの設定方法によっては、さらに多くの設定が必要になる可能性があります。

pdate: for PHPサポートするには、php-fpmがインストールされていることを確認する必要があり、マスターnginxサーバーにロケーションブロックが必要です。 :

location ~ \.php$ {
    proxy_pass http://your_ip_address: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;
}
1
SteveEdson