2

nginx.conf ファイルを変更して別のホストにリダイレクトする方法を知っている人はいますか? http://mydomain.com/page1http://mydomain.com/page2をローカル ネットワーク上の別のホストに転送したいと考えています。mydomain.com/page1 は 10.100.0.163 に移動し、mydomain.com/page2 は 10.100.0.164 に移動する必要があります。

これは、Ubuntu サーバーの nginx.conf ファイルの HTML セクションに追加したものです。

location /page1/ {
rewrite ^/page1/(.*)$ http://10.100.0.163/$1 permanent;
}

location /page2/ {
rewrite ^/page2/(.*)$ http://10.100.0.164/$1 permanent;
}

nginx.conf ファイルに追加する必要があるものは他にありますか? 他にも変更が必要な構成ファイルはありますか?

nginx の標準インストールを行っただけで、他には何も変更していません。

4

1 に答える 1

8

Debianベースのディストリビューション(Ubuntuを含む)では、nginxについて次の考慮事項が当てはまります(apacheパッケージでも同様のレイアウトが使用されます)。

  • /etc/nginx/nginx.confメインの設定ファイルです
  • メインの設定ファイルには、/etc/nginx/conf.dおよび内のすべてのファイルが含まれます/etc/nginx/sites-enabled
  • /etc/nginx/conf.d/<some-file>ここで、メイン構成に追加を追加します。
    • nginx以外のパッケージが構成を追加する場合は、それらが含まれます/etc/nginx/conf.d/<packagename>(gitwebやphp-thingなどのパッケージを考えてください)。
    • ファイルを追加する/etc/nginx/conf.d/local/etc/nginx/conf.d/local_something、必要に応じてファイルを追加します。
    • そのように物事を分離することにより、潜在的な問題がどこにあるかを簡単に特定できます。
  • /etc/nginx/sites-enabled/<some-file>ここに、仮想ホストに必要な構成の追加を配置します。仮想ホストごとに1つのファイルです。仮想ホストを分離することで、変更/修正する場所を簡単に知ることができます(そのvhostに関係のないものはすべて自動的に無視されます)。
  • /etc/nginx/sites-available/パッケージが追加したいvhostの構成を配置する場所です。これらは自動的にアクティブになるわけではありません。リンク元またはコピー先のサイトを有効にするためです。/etc/nginx/sites-enabled/

mydomain.com 作成する追加は仮想ホストに固有であるため、に追加する必要があります/etc/nginx/sites-enabled/mydomain.com。その内容は次のようになります。

server{
  server_name mydomain.com;

  location /page1/ { rewrite ^/page1/(.*)$ $scheme://10.100.0.163/$1 permanent; }
  location /page2/ { rewrite ^/page2/(.*)$ $scheme://10.100.0.164/$1 permanent; }

  #add config needed to server whatever else on 
  #location / {}
}

その構成に関する注意:

  • rewrite上記のように行うと、ブラウザに表示されるURLが自動的に書き換えられたURLに変更されます
  • ユーザーに表示されるURLを「mydomain.com/page1」のままにする場合は、書き換えの代わりにproxy_pass -directiveを使用する必要があります(この種のセットアップのキーワードはリバースプロキシです) 。
  • $ http://の代わりに$ schema://を使用します。これは、後でhttps://でvhostをリッスンさせても、そのように機能しなくなるためです。
于 2013-02-23T08:01:18.150 に答える