web-dev-qa-db-ja.com

nginxはポート80をリッスンしていません

Ubuntu 12.04サーバーとnginx 1.2.7をインストールし、サイト対応からdefaultを削除し、sites-availablesites-enabledにシンボリックリンクを追加しました。その後、nginxを再起動しました。

問題:ただし、URLにアクセスしてもサイトはロードされません。 netstat -nlp | grep nginxnetstat -nlp | grep 80はどちらも結果を返しません! lsof -i :80も何も返しません。別のサーバーからのDigは、正しいIPアドレスを返すため、DNSの問題ではありません。 Apacheに接続できましたが、現在サービスを停止しています。 nginxログにも何も表示されません。

この問題のトラブルシューティング方法を教えてください。

/ etc/nginx/site-available/mysite.com

server {
    listen   80;
    server_name www.mysite.com mysite.com *.mysite.com;
    access_log /var/log/nginx/access.log;
    error_log /var/log/nginx/error.log;
    root /var/www/mysite/public;

    index index.php index.html;

    location / {
        try_files $uri $uri/ /index.php?$args ;
    }
    location ~ \.php$ {
        fastcgi_pass unix:/var/run/php5-fpm.sock;
        fastcgi_index index.php;
        include fastcgi_params;
        fastcgi_read_timeout 300;
    }

}
62
Nyxynyx

私はこれと同じ問題を抱えていました。解決策は、siteconfファイルを正しくシンボリックリンクしていなかったことです。 vim /etc/nginx/sites-enabled/mysite.comを実行してみてください—それに到達できますか? 「許可が拒否されました」と表示されていました。

実行されない場合:

rm /etc/nginx/sites-enabled/mysite.com
ln -s /etc/nginx/sites-available/mysite.com /etc/nginx/sites-enabled/mysite.com
126
thcipriani

ログが問題に関して沈黙している場合、サイト対応ディレクトリを含めていない可能性があります。サイトがロードされていることを通知する簡単な方法の1つは、サーバーブロック内のエラー/アクセスログのパスを一意のパスに設定し、nginxをリロードして、ファイルが作成されているかどうかを確認することです。

/etc/nginx/nginx.confのhttpコンテキスト内に次のincludeディレクティブが存在することを確認してください。

http {
  ...
  include /etc/nginx/sites-enabled/*;
}
26
Patrick

同じ問題にぶつかりました。HTTPで接続するとFailed to load resource: net::ERR_CONNECTION_REFUSEDエラーが発生しましたが、HTTPSでは問題ありません。 netstat -tulpnを実行し、nginxがIPv4のポート80にバインドしていないことを確認しました。ここで説明されているすべてを完了しました。何かであることが判明veryバカ:

sites-availableを含むdefault_serverファイルが実際に有効になっていることを確認してください。

これが他のいくつかの貧しい馬鹿をしばらくそこに救うことを願っています。

5
dayuloli

私は、次の手順でnginxをデバッグするアプローチに役立つことがわかりました:

1 ... nginxが実行されていることを確認します。

ps aux | grep nginx

2 ...問題のポートにすでにバインドされているプロセスを確認します。

lsof -n -i:80

... nginxがリロードされていることを確認してください。

Sudo nginx -t
Sudo nginx -s reload

Macでは、brew services restart nginxnot nginxをリロードするのに十分です。

4 ...単純な応答を手動で作成して、ロケーションパスが混乱しないようにしてください。これは、proxy_passを使用して実行中の他のアプリにリクエストを転送しているときに問題が発生した場合に特に役立ちます。

location / {
    add_header Content-Type text/html;
    return 200 'Here I am!';
}
4
spencer.sm

おそらくnginxをポート80に2回バインドしています。それはあなたの完全な設定ファイルですか?ポート80をリッスンする別のステートメントはありませんか?

4
Andres

;の前の行の/etc/nginx/nginx.confにセミコロンinclude /etc/nginx/servers-enabled/*;がないと、この命令を無視でき、nginx -tチェックは成功します。

したがって、/etc/nginx/nginx.confのすべての命令がセミコロン;で終了していることを確認してください。

2
noraj

Nginxバイナリが本当に存在するかどうかを確認しましたか?確認してください

#whereis nginx

バイナリパスを出力し、/ etc/init.d/nginxのinitスクリプトでこのパスを確認します。例えば.

DAEMON=/usr/sbin/nginx

(私の初期スクリプトで「test -x $ DAEMON || exit 0」が呼び出され、いずれの場合もこのスクリプトは何も返しませんでした-バイナリは完全に欠落していました)

1
Dionysius

私の場合、これらのネットワークコマンドの出力は、nginxがポート80に正しくバインドされていることを示していますが、nmapを使用してポートに外部からアクセスしたり表示したりできませんでした。

ファイアウォールを疑ったが、マシン上の古いiptablesルールがそれらのポートからトラフィックをリダイレクトし、nginxと競合していたことが判明した。 Sudo iptables-saveを使用して、現在適用可能なすべてのルールを表示します。

0
Silveri