web-dev-qa-db-ja.com

NginXドメインリゾルバー

Nginxがインストールされ、ポート8080にApacheがインストールされています。問題は次のとおりです。本番ドメイン(たとえばmysite.com)のサイトを構築し、そのドメイン用にすべてを構成しています。 Windowsホストファイルを変更してmysite.comをサーバーのIPにリダイレクトすると、うまく機能しました... nginxをインストールする前に。 Nginxはドメイン自体を解決し、(明らかに)ドメインを解決できませんmysite.com

ログによると:

2012/02/07 07:35:29 [error] 11758#0: *1 mysite.com could not be resolved (110: Operation timed out), client: 89.112.11.xx, server: myssite.com, request: "GET / HTTP/1.1", Host: "mysite.com"

それでは、サーバー上のhostsファイルを変更しようとします。私は/ etc/hostsでこれを行います:

127.0.0.1 mysite.com

さて、やってみましょう!これが有効になった場合、少なくともwgetはそれが正しいことを見つけるはずですよね? 8080番目のポートにApacheがある限り、メインページを取得できます。

wget mysite.com

正しいページをダウンロードします。これは、/ etc/hostsが適切に機能することを意味します。

しかし、ngnixはまだそれを解決しません!サーバーを再起動した後でも。どうして?独自のリゾルバがありますか?それを機能させる方法は?

3
Dmitry

/ etc/hostsから解決するために127.0.0.1でdnsmasqを使用し、リゾルバー127.0.0.1をnginxconfigに配置できます。

4
Vasily

nginxはドメイン解決にhostsファイルを使用しません。 listenにドメイン名を使用する場合、proxy_passまたはfastcgi_pass、代わりにIPアドレスまたはlocalhostを使用できます。

listen localhost:80;
server_name mysite.com;
...
location / {
    proxy_pass http://localhost:8080;
}
4
Vanav