여러 웹 사이트를 제공하는 nginx 인스턴스가 실행 중입니다. 첫 번째는 서버의 IP 주소에 대한 상태 메시지입니다. 두 번째는 admin.domain.com
. 이것들은 훌륭하게 작동합니다. 이제 다른 모든 도메인 요청이 단일로 이동하고 싶습니다. index.php
많은 도메인과 하위 도메인이 있으며 모두 nginx 구성에 나열하는 것은 비현실적입니다.
지금까지 설정 server_name
을 시도했지만 *
잘못된 와일드 카드로 실패했습니다. *.*
다른 서버 블록을 추가 할 때까지 작동 한 다음 충돌하는 것 같습니다.
다른 사이트가 정의 된 후 nginx에서 catch-all 서버 블록을 실행하는 방법이 있습니까?
NB 저는 스팸 발송자가 아닙니다. 유용한 콘텐츠가 포함 된 정품 사이트입니다. 데이터베이스의 동일한 CMS에 의해 구동됩니다!
답변
포괄 서버 블록에서 청취 옵션을 이것으로 변경하십시오. (추가 default_server
) 이것은 (지정된 포트에서) 정의되지 않은 모든 연결을 취합니다.
listen 80 default_server;
파일이나 폴더가 존재하지 않는 경우 모든 것을 index.php로 푸시하려면;
try_files $uri /$uri /index.php;
답변
답변
이것은 작동합니다 :
server_name ~^(.+)$
답변
나를 위해 어떻게 든 default_server가 작동하지 않는 것을 정의하십시오. 나는 그것을 해결했다
server_name ~^.*$
모두의 정규 표현식을 사용합니다.
답변
server
지시어 1 개만
default_server 매개 변수 (있는 경우)는 서버가 지정된 주소 : 포트 쌍의 기본 서버가되도록합니다. 지시문에 default_server 매개 변수가없는 경우 address : port 쌍이있는 첫 번째 서버가이 쌍의 기본 서버가됩니다.
server
지시문 이 하나만 있으면 모든 요청을 처리하므로 아무것도 설정할 필요가 없습니다.
여러 server
지시어
모든 요청을 지정된 server
지시문 과 일치 시키려면 default_server
매개 변수를에 추가 하기 만하면 listen
Nginx는이 server
지시문을 기본값으로 사용합니다 .
server {
listen 80 default_server;
}
약 server_name _;
에서 의 Nginx 문서
포괄 서버 예제에서 이상한 이름 “_”을 볼 수 있습니다.
server { listen 80 default_server; server_name _; return 444; }
이 이름에는 특별한 것이 없으며 실제 이름과 절대 교차하지 않는 수많은 잘못된 도메인 이름 중 하나 일뿐입니다. “-“및 “! @ #”과 같은 다른 잘못된 이름도 동일하게 사용할 수 있습니다.
설정 한 내용은 중요하지 않으며 잘못된 도메인 이름server_name
일뿐 입니다.
답변
이제 마스크를 사용할 수 있습니다.
server {
listen 80;
server_name *.example.org;
...
}
server {
listen 80;
server_name mail.*;
...
}
자세한 내용은 http://nginx.org/en/docs/http/server_names.html을 참조하십시오.
답변
빈 Host
헤더 ( HTTP / 1.0 에서 허용됨)가 있는 요청도 포착 하려면 regex 및 empty 둘 다 사용할 수 있습니다 server_name
.
server {
listen 80;
server_name ~. "";
}