背の高い404を解決する方法
vhost.confを構成した後、ドメイン名にアクセスすると404が返されます。順番に確認してください
- selinuxが閉じているかどうか
- ドメイン名のパスは正しいですか
- ホスト名はipに対応していますか
これらの場所では問題はありませんが、どうすればよいですか?
nginxプロセスモデルはmaster-worker
モデルです。ワーカーcgi解決による特定の要求を担当します。
[sujianhui@dev529 public]$>ps aux | grep nginx
root 9977 0.0 0.0 47496 2444 ? Ss 15:13 0:00 nginx: master process /usr/sbin/nginx -c /etc/nginx/nginx.conf
sujianh+ 19271 0.0 0.0 49584 2732 ? S 20:27 0:00 nginx: worker process
sujianh+ 19992 0.0 0.0 112720 964 pts/0 S+ 20:44 0:00 grep --color=auto nginx
ワーカープロセスがロードするファイルを追跡できる場合は問題ありません。ファイルが存在するかどうかを確認するだけで、問題はファイルを追跡する方法にありますか?
Linuxにstrace
は、プロセスによって開始されたシステム呼び出しを監視できるツールがあります。つまり、オペレーティングシステムの6つの基本操作を確認できます。その中にはstat
、ファイルのメタ情報を取得するためのシステム呼び出しがあります。
これを監視できます。
ワーカープロセスを1つだけ開いたので、1つのワーカープロセスをトレースするだけで十分です。
[sujianhui@dev529 network_security]$>strace -p 19271
strace: Process 19271 attached
epoll_wait(11, [{EPOLLIN, {u32=261448992, u64=94395052680480}}], 512, -1) = 1
accept4(7, {sa_family=AF_INET, sin_port=htons(38612), sin_addr=inet_addr("127.0.0.1")}, [16], SOCK_NONBLOCK) = 4
epoll_ctl(11, EPOLL_CTL_ADD, 4, {EPOLLIN|EPOLLRDHUP|EPOLLET, {u32=261449689, u64=94395052681177}}) = 0
epoll_wait(11, [{EPOLLIN, {u32=261449689, u64=94395052681177}}], 512, 60000) = 1
recvfrom(4, "GET / HTTP/1.1\r\nHost: local.lara"..., 1024, 0, NULL, NULL) = 661
stat("/home/sujianhui/PhpstormProjects/blog/public/", {st_mode=S_IFDIR|0775, st_size=95, ...}) = 0
stat("/home/sujianhui/PhpstormProjects/blog/public/", {st_mode=S_IFDIR|0775, st_size=95, ...}) = 0
stat("/home/sujianhui/PhpstormProjects/blog/public/index.php", {st_mode=S_IFREG|0664, st_size=1731, ...}) = 0
epoll_ctl(11, EPOLL_CTL_MOD, 4, {EPOLLIN|EPOLLOUT|EPOLLRDHUP|EPOLLET, {u32=261449689, u64=94395052681177}}) = 0
getsockname(4, {sa_family=AF_INET, sin_port=htons(80), sin_addr=inet_addr("127.0.0.1")}, [16]) = 0
socket(AF_INET, SOCK_STREAM, IPPROTO_IP) = 5
ioctl(5, FIONBIO, [1]) = 0
epoll_ctl(11, EPOLL_CTL_ADD, 5, {EPOLLIN|EPOLLOUT|EPOLLRDHUP|EPOLLET, {u32=261449457, u64=94395052680945}}) = 0
connect(5, {sa_family=AF_INET, sin_port=htons(9000), sin_addr=inet_addr("127.0.0.1")}, 16) = -1 EINPROGRESS
epoll_wait(11, [], 512, 60000) = 0
...
...
close(9) = 0
epoll_wait(11, [], 512, 4943) = 0
close(4) = 0
epoll_wait(11, ^Cstrace: Process 19271 detached
<detached ...>
重要な情報を抽出する
`stat("/home/sujianhui/PhpstormProjects/blog/public/index.php", {st_mode=S_IFREG|0664, st_size=1731, ...}) = 0`
追跡stat
により、作業者が探していることがわかります/home/sujianhui/PhpstormProjects/blog/public/index.php
。この問題は解決されました。
同様に、この解決策は403でも実行できます。
5xxシリーズ
5xxシリーズの問題はすべてPHP側に表示されます。次のnginxエラーログを確認する方が、ブラインド推測よりも信頼性が高くなります。