LINUX.ORG.RU
решено ФорумAdmin

Nginx & server_name

 


0

1

Есть два домена example.com и api.example.com, они оба смотрят на один сервак с nginx.

Для домена example.com настройки nginx вот такие:

server {
    listen 11.11.11.11:80;
    server_name ~^example.com;

location / {
                proxy_pass http://192.168.100.100/;
                proxy_redirect     off;
                proxy_set_header        Host            $host;
                proxy_set_header        X-Real-IP       $remote_addr;
                proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;

                client_max_body_size    100m;
                client_body_buffer_size 128k;

                proxy_connect_timeout   120;
                proxy_send_timeout      120;
                proxy_read_timeout      120;
                proxy_buffer_size       128k;
                proxy_buffers           10 512k;
                proxy_busy_buffers_size 512k;
                proxy_temp_file_write_size      512k;
        }
}

Для домена api.example.com нет никаких виртуальных хостов. Но есть попробывать зайти по http://api.example.com то он редиректит (permanent) на http://example.com/. Почему? как сделать чтобы он выдавал ошибку?

2 сервера, у каждого свой домен. api должен всегда выдавать 404. Примерно так:

server {
    listen 11.11.11.11:80;
    server_name example.com;

    location / {
        ...
        ...
        ...
    }
}


server {
    listen 11.11.11.11:80;
    server_name api.example.com;

    location / {
          return 404;      
    }
}
fjoe
()

Всё правильно, у тебя единственный хост в nginx'e, он и будет использоваться по-умолчанию, коль под «специфический» (в твоём случае api.example.com) нет никаких хостов.

VirRaa ★★★
()
Ответ на: комментарий от fjoe

а если у меня не один домен такой? а к примеру 20-50-100? для каждого домена/поддомена прописывать это?

marat04
() автор топика
Ответ на: комментарий от marat04

Спасибо :) но уже решил задачу добавлением настроек по умолчанию:

server {
        listen 11.22.33.44:80 default;
        server_name  _;
        access_log /var/log/nginx/default.access.log main;
        server_name_in_redirect off;
#       root /var/www/nginx-default/;
        return 404;
}



# HTTPS server
#
server {
        listen 11.22.33.44:443 default;
        server_name  _;
        access_log /var/log/nginx/default.access.log main;
        server_name_in_redirect off;
        ssl                   on;
        ssl_protocols         SSLv3 TLSv1;
        ssl_certificate       /etc/nginx/key/server.crt;
        ssl_certificate_key   /etc/nginx/key/server.key;
#       root /var/www/nginx-default/;
        return 404;
}

для каждого IP-адреса нужно делать, ну по крайней мере для

nginx version: nginx/0.6.32

Он почему то не понимает ни 80(*:80) и 443(*:443)

marat04
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.