サーバーに構成をアップロードする前に、nginxサブドメインをテストしたいと思います。 localhostでテストできますか?やってみる
server {
listen 80;
server_name localhost;
location / {
proxy_pass http://localhost:8080;
}
}
server {
listen 80;
server_name sub.localhost;
location / {
proxy_pass http://localhost:8080/sub;
}
}
そして、それは機能しません。動作させるために、hostsファイルを変更しますか?また、サイトをサーバーにアップロードした後、DNSレコードを変更してsub.mydomain.comを追加する必要がありますか?
はい、「127.0.0.1 sub.localhost」をホストファイルに追加します。その潜水艦はどういうわけか解決する必要があります。うまくいくはずです。
次に、ネットに接続する準備ができたら、はい、サブドメインsubのaまたはcnameレコードを追加します。
Proxy_passを使用するときは、nginxのproxy.confも含めます。 http://wiki.nginx.org/HttpProxyModule
LinuxベースのOSでは、Sudo
/etc/hosts
ファイルとして編集し、127.0.0.1 localhost
を127.0.0.1 *.localhost
に変更するだけです。
したがって、/etc/nginx/sites-enabled/<environment>/<your_project_name>
でserver_name
キーを<subdomain>.localhost
として編集します。
Nginxとネットワークサービスをリロードします。
$ Sudo service nginx reload
$ Sudo service networking reload
そして、URLバーでhttp://<subdomain>.localhost
を試してください。
わたしにはできる。
[〜#〜]更新[〜#〜]
私の意見では、より良い解決策は、サブドメインが存在しない場合にのみ応答する仮想サーバーを/etc/nginx/sites-enabled/development/default
にデフォルトサーバーとして作成することです(デフォルトとして定義できるサーバーは1つだけであることに注意してください)。
server {
listen 80 default_server;
root /var/www/html/errors/404;
server_name *.localhost *.<Host-name>;
location / {
index subdomain.html;
}
}
nginx.conf
(通常/etc/nginx/nginx.conf
にある)に、この仮想サーバーの動作にinclude /etc/nginx/sites-enabled/**/*;
が含まれていることを確認してください。そうでない場合は、それを入れてから$ Sudo service nginx reload
を実行します。
この場合、*.localhost
に/etc/hosts
を入れる必要はありませんが、localhost
だけを入れます。
独自のドメイン名を持つパブリックウェブサーバーの場合、DNS構成でCNAMEレコードを使用して正規名を追加するだけです。
CNAME * example.com.
これが完了したら、nginx設定を設定します
server_name *.example.com example.com;
ローカル設定ではnginxの同じ設定を維持できますが、ローカルDNS設定がない限り、/ etc/hostsファイルを編集して各サブドメインを手動で追加する必要があります。ワイルドカードは、/ etc/hostsファイルでは機能しません。
127.0.0.1 abc.example.com def.example.com ghi.example.com
通常、ローカルドメインの名前空間として.localを使用することをお勧めします。