이곳이 이 글을 게시하기에 적합한 곳이기를 바랍니다.
여러 사이트를 호스팅하는 CentOS 6 VPS가 있습니다. 현재 세 개의 기존 사이트가 정상적으로 실행되고 있지만 이제 네 번째 사이트를 추가하려고 하는데 항상 "Fedora의 nginx에 오신 것을 환영합니다!"라는 메시지가 표시됩니다. URL(nginxFail.com이라고 함)을 방문하면 환영 페이지가 나타납니다.
test.txt 파일을 /home/nginxFail/www에 넣고 nginxFail.com/test.txt로 이동해 보았습니다. 403이 발생했습니다. nginxFail.com/nosuchfile.txt 및 nginxFail.com/nosuchdir도 403을 발생했습니다.
내가 이미 시도한 것:
-도메인 정보 확인: 신규 도메인과 다른 3개 도메인의 도메인 정보는 SPF 정보를 포함하여 완전히 동일합니다. 새 도메인을 전파하는 데 약 5일이 걸렸습니다.
-httpd.conf 확인: 내가 가진 것은 다음과 같습니다.
<VirtualHost *:80>
DocumentRoot /home/**nginxFail**/www
ServerName **nginxFail.com**
ServerName **<my server IP>**
ErrorLog /var/log/httpd/**<errorLog>**
CustomLog /var/log/httpd/access_log combined
<Directory "/home/**nginxFail**/www">
Options +Indexes FollowSymLinks +ExecCGI
Order allow,deny
allow from all
</Directory>
</VirtualHost>
물론 굵게 표시된 항목은 실제 내 정보로 설정되어 있습니다. 이는 다른 세 사이트를 작동시키는 이 파일의 다른 항목과 동일한 설정입니다.
또한 여기에 압축된 /etc/nginx/nginx/conf가 있습니다:
user nginx;
worker_processes 1;
error_log /var/log/nginx/error.log;
#error_log /var/log/nginx/error.log notice;
#error_log /var/log/nginx/error.log info;
pid /var/run/nginx.pid;
http {
include /etc/nginx/mime.types;
default_type application/octet-stream;
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log /var/log/nginx/access.log main;
sendfile on;
#tcp_nopush on;
#keepalive_timeout 0;
keepalive_timeout 65;
#gzip on;
# Load config files from the /etc/nginx/conf.d directory
include /etc/nginx/conf.d/*.conf;
#
# The default server
#
server {
listen 80;
server_name _;
#charset koi8-r;
#access_log logs/host.access.log main;
location / {
root /usr/share/nginx/html;
index index.html index.htm;
}
error_page 404 /404.html;
location = /404.html {
root /usr/share/nginx/html;
}
# redirect server error pages to the static page /50x.html
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
}
}
-서버(및 /etc/init.d/httpd)를 다시 시작합니다. 불운.
-다른 컴퓨터 시도: nginx 문제가 바이러스나 호스트 파일의 결과일 수 있다는 것을 읽었습니다. 내 컴퓨터는 항상 깨끗하고(지속적인 바이러스 검사, 브라우저 실행 오류 검사를 신뢰하지 않음, 하하) 호스트 파일도 깨끗한 것 같습니다. 그냥 재미삼아 다른 컴퓨터와 휴대폰에서도 사이트에 접속해 보았는데 동일한 nginx 페이지가 표시되었습니다.
-Google: 실패했어요! :o, 이것이 제가 브라우저 정리에 대해 배운 방법입니다.
-권한 확인: 내 서버의 모든 사이트는 /home/ 디렉터리의 자체 폴더에 나열되어 있습니다. 여기에 새 사이트 항목도 입력했습니다. 앞에서 말했듯이 다른 세 사이트는 잘 작동하므로 /home/에 대한 권한 문제가 아니며 home/nginxFail/www에 755가 있는지 확인했습니다(다른 작업 사이트와 마찬가지로).
- /etc/nginx/ 디렉토리를 보면: 사이트가 활성화된 디렉토리가 없다는 것을 알았습니다. 다른 질문에서 이것이 원인일 수 있다는 것을 보았는데, 그렇다면 왜 다른 3개의 웹사이트가 제대로 작동하겠습니까?
- 로그 보기: 웹 서버가 HTTP 요청을 받고 403을 발생시키고 있다는 승인 외에는 var/log에서 실제로 아무것도 찾지 못했습니다. 위에 언급된 test.txt 파일을 방문한 후 로그 디렉토리에서 모드 날짜의 변경 사항을 확인하여 어떤 파일을 살펴볼지 확인했습니다.
- nginx 표시를 중단하고 내 사이트를 표시하라고 사이트에 구두로 지시: 운이 없습니다.
-/etc/nginx를 살펴봅니다. 거기에 도움이 될 만한 사이트 사용 가능 디렉토리가 있다는 것을 읽었지만 루트로 로그인하면 해당 디렉토리가 표시되지 않습니다.
나는 여기서 약간 헤매고 있습니다.
편집: 문제에 대해 좀 더 조사한 결과 Apache 및 nginx와의 이상한 충돌이 원인인 것 같습니다.
이 사이트는 Apache 2.2.23을 실행하며 아마도 실수로 nginx도 설치된 것으로 보입니다. 내가 받은 403 페이지는 Apache가 시작되었음을 의미하지만 도메인 자체로 이동하면 어떤 이유로든 nginx로 이동하게 됩니다. 내 자연스러운 생각은 /etc/init.d/nginx -s stop
. 그렇게 하고 nginxfail.com으로 돌아가면 nginx 페이지가 계속 표시됩니다. 그렇게 하면 ps -ef | grep nginx
nginx 프로세스를 중지한 후에도 실행 중인 것을 볼 수 있으며, 내가 아는 한 서버에는 자동으로 다시 시작하는 스크립트가 없어야 합니다.
여기에서 흥미로워집니다. 그렇게 하면 /etc/init.d/httpd stop
nginxfail.com과 다른 3개의 작업 사이트를 포함하여 4개의 사이트가 모두 죽고, httpd를 다시 켜면 첫 번째 게시물에서 동일한 상황이 발생합니다.
/etc/httpd/error_log를 살펴보니 클라이언트가 서버 구성에 의해 거부됨: /home/nginxfolder/www/ 오류가 발생하고 권한을 확인하여 웹 서버(이 경우 Apache라고 확신합니다)는 다음과 같습니다. 올바른 곳을 찾아보세요.
이것이 모호하고 내 설정을 잘 설명하지 못한다면 죄송합니다. 도움이 될 만한 다른 구체적인 정보가 있나요?