테스트를 위해 특별히 새 가상 머신을 만들었습니다. 가상 머신에는 a.a.a.a와 b.b.b.b라는 두 개의 IP가 있습니다. nginx가 a.a.a.a:80만 수신하기를 바랍니다.
하지만 지정된 청취 IP가 구성 파일
에 설정되어 있으면 정상적으로 시작할 수 있습니다. listen a.a.a.a:80;
后重启系统,nginx 会启动失败并报错Starting nginx: [emerg]: bind() to a.a.a.a failed (99: Cannot assign requested address)
,但是此时只要手动 systemctl start nginx
구성 파일
에서 IP를 제거하고 시스템을 다시 시작하면 nginx가 정상적으로 시작할 수 있습니다. listen 80;
요약:
Listening IP를 지정한 후에는 시스템에서 자동으로 서비스를 시작할 수 없지만 수동으로 서비스를 시작하여 정상적으로 사용할 수 있습니다.
수신 IP를 지정하지 않으면 서비스가 시스템과 함께 자동으로 시작되어 정상적으로 작동합니다.
임시 해결 방법은 이 게시물의 댓글을 참조하세요(기본적으로 확장되지 않음)
추측되는 이유는 nginx가 바인딩을 위해 IP를 감지해야 하는데 시스템이 감지 중에 값을 반환하지 않거나 감지 타이밍이 너무 빨라 시스템이 바인딩을 허용하지 않기 때문입니다
.
nginx를 시작한 사용자가 루트 사용자인지 확인하세요. 기본적으로 포트 80은 루트만 점유할 수 있습니다. 또한 일반 사용자가 포트 80을 점유할 수 있도록 관련 구성을 수정해야 합니다.