http://localhost:8080にブラウザからアクセスすると![イメージ説明](1526d354babaf9006ae9ab8a2d595fb1.png)
と表示されるのですが、ターミナルでcurl
でアクセスしようとしてもcurl: (7) Failed to connect to localhost port 8080: Connection refused
というエラーが出てしまい、本当にnginxが起動できているのかわかりません。
やったこと
こちらの記事を参考に-I
オプションをつけましたが上記の結果になりました。
「やったこと」に記載されている記事には-Iオプションのほかにいろいろ確認事項が載っていますが、すべて試しましたか?その結果はどうでしたか?
ブラウザに proxy が設定されてるとか? または、ターミナルはどこかに ssh 接続してるとか?
itagagakiさん
ご質問ありがとうございます。
1.`ps ax | grep nginx`の実行結果は`56115 s000 S+ 0:00.01 grep nginx`でした
2.`netstat -nat | grep LISTEN | grep 80`の実行結果は7行ほど出力されましたが、ここに書いていいのかわかりません(しかし80を含んでるのはひとつしかありませんでした...)
3.`open /var/log/nginx/error_log`をしてみましたが`The file /var/log/nginx/error_log does not exist.`と言われてしまいました
追記
https://qiita.com/morrr/items/7c97f0d2e46f7a8ec967#%E5%88%B6%E5%BE%A1%E6%A7%8B%E6%96%87
3についてですが、上の記事の「エラーログを指定する」を見て、自分のerror/logはどこにあるのかと思い、ブラウザで/usr/local/etc/nginx/nginx.confと打ったら#error_log logs/error.log;と書かれているのを見つけ`open /usr/local/etc/nginx/logs/error.log`を実行しましたがフィイルないよと言われてしまいました。
hoshi-takanoriさん
sshには2週間前の私の質問にございますようにssh接続しましたが終了した記憶があります。ssh接続しているか確認する手段はございますでしょうか?
https://teratail.com/questions/361007
curl に --ipv4 オプションを付けるとどうでしょうか。
ご質問ありがとうございます。
`curl --ipv4 http://localhost:8080`を実行しますと`curl: (7) Failed to connect to localhost port 8080: Connection refused`と表示されます。
見落としていましたが
> 1.`ps ax | grep nginx`の実行結果は`56115 s000 S+ 0:00.01 grep nginx`でした
その1行だけですか。だとしたらnginx動いてませんね。
ブラウザからアクセスできているように見えるのは謎です。キャッシュを表示しているのかも?
nginxはどうやって起動しましたか?それをもう一度やってみては。
https://teratail.com/questions/363495
ここで質問させていただいたときにマスタープロセスとワーカープロセスをkillしてしまったからですかね...?
>キャッシュを表示しているのかも?
そうであるかどうかはどうやったら確認できますでしょうか?
>nginxはどうやって起動しましたか?それをもう一度やってみては。
`brew services start nginx`を実行すると
==> Successfully started `nginx` (label: homebrew.mxcl.nginx)
とは表示されるものの、続けて`ps ax | grep nginx`を実行すると`65142 s000 U+ 0:00.01 grep nginx`しか出てきません、、
Homebrewですか。私はHomebrewをあまり知らないのですが…。
リブートしても解消しなかったですか?
ブラウザのほうはスーパーリロードしてみてください。
方法はこちら
https://ao-system.net/note/69
以前、「Homebrew で入れたものはユーザー権限で動かす」と書きましたが、よく考えたら Web サーバーを 80, 443 番ポートで動かすには sudo する必要があることに気づきました。実験してみましたが、sudo brew services start nginx するといくつかのファイルやディレクトリの所有者が書き変わりますね…。
確認ですが、最終的に nginx は何のために使いたい (どのようにアクセスしたい) のでしょうか?
・実運用したい (外部から http://ホスト名 でアクセス)
・実験・テスト用だが、http://localhost でアクセスしたい
・実験・テスト用なので、http://localhost:8080 で構わない
itagagakiさん
ご提案ありがとうございます、少々お待ちください。
hoshi-takanoriさん
https://zenn.dev/bigen1925/books/introduction-to-web-application-with-python/viewer/making-silly-web-server
こちらの記事を見ながら自分はapacheではなくnginxを使用して進めておりまして(このチュートリアル的なのが終わったら自作ブログを運用したいと思ってます)、今は実験・テスト用なのでhttp://localhostでいいかと思いましたが、自分のconfファイルを見てみるとhttpの中のserverの中のlistenが8080になっていたのですが、nginxはデフォルトでポート番号は8080を使用するということではないのでしょうか?
とりあえず勉強用ってことなら http://localhost:8080 で良いのでは。(:8080 を打つのが面倒という話もありますが…。) また、自作ブログに関しては最終的には外部に公開するってことで、つまり外部のサーバーを借りるってことですよね? (お使いの Mac で自宅サーバーを立てることも不可能ではありませんが…。)
> nginxはデフォルトでポート番号は8080を使用するということではないのでしょうか?
nginx に限らず、Web サーバーのデフォルトのポートは 80 (および 443) です。また、macOS や Linux などの UNIX 系の OS では、ポート 0 〜 1023 でサーバーを動かすには root 権限が必要になります。が、Homebrew はデフォルトではユーザー権限で動かすものなので、Homebrew で入れた nginx ではポート 80 の代わりに 8080 がデフォルトになってます。
http://localhost (つまりポート 80) で動かしたいなら、nginx を root 権限で (つまり sudo brew services start nginx などで) 動かすことになりますが、実験してみたら一部のファイルやディレクトリの所有者が書き変わって、brew upgrade や brew uninstall の時に消えないファイルが残ってしまったりするようです…。
hoshi-takanoriさん
>自作ブログに関しては最終的には外部に公開するってことで、つまり外部のサーバーを借りるってことですよね?
はい、GCP使おうとしてます。
また、Homebrewで入れたwebサーバーはデフォルトではポート番号は8080なのですね、勉強になりました。
話は戻りますが、`brew services start nginx`を実行すると
==> Successfully started `nginx` (label: homebrew.mxcl.nginx)
とは表示されるものの、続けて`ps ax | grep nginx`を実行すると`65142 s000 U+ 0:00.01 grep nginx`しか出てきません。しかし、 http://localhost:8080をブラウザで表示させるとWelcome to nginx!が現れるのですがこれはキャッシュ(?)と呼ばれる問題なのでしょうか...?
https://zenn.dev/bigen1925/books/introduction-to-web-application-with-python/viewer/making-silly-web-server-step3#apache%E3%82%92%E8%B5%B7%E5%8B%95%E3%81%99%E3%82%8B
すいません、と言いますかこちらの「Apacheを起動する」で`sudo apachectl start`とありますがその代わりに`brew services start nginx`を実行して http://localhost:8080にアクセスしても`It works`の文字が現れず代わりにnginxのWelcome to nginx!が現れます。。
ブラウザについては itagagaki さんがお書きになっているスーパーリロードをお試しください。また、それで駄目ならブラウザの proxy 設定をご確認ください。
brew services start nginx で nginx が起動しないのは、一部のファイルの所有者が書き変わってるためだと思いますので、以下のコマンド実行すれば直るかと。(自分のアカウントの部分は実際のアカウントに置き換えて実行してください。)
sudo chown -R 自分のアカウント /usr/local/var/log/nginx /usr/local/var/run/nginx*
macなのでcommand + shift + R押しましてWelcome to nginx!の表示が消え、このサイトにアクセスできません、となりました。ということはやっぱりnginx起動されてなかったんですかね...?
hishi-takanoriさん
すいません、「自分のアカウント」は$whoamiで分かってsudo chown実行したのですが、その後に`brew services start nginx`を実行すると`Bootstrap failed: 5: Input/output error
Error: Failure while executing; `/bin/launchctl bootstrap gui/501 /Users/m.t./Library/LaunchAgents/homebrew.mxcl.nginx.plist` exited with 5.`というエラーが表示されます。。
ファイルの所有者が書き変わってるのを`sudo chown -R 自分のアカウント /usr/local/var/log/nginx /usr/local/var/run/nginx*`で直したら`sudo brew services start nginx`ではなく`brew services start nginx`で動くはずってことですよね...?
今nginxコマンド試したらそれで起動しました。。
あなたの回答
tips
プレビュー