настроить ssl с nginx на linux

У меня есть этот клиентский сервер, на котором я хотел бы настроить ssl на сайте вроде этого app..net

На сервере запущен ubunto и он написан на laravel / php.

server {
    server_name <domain>.net www.<domain>.net;
    return 301 https://app.<domain>.net$request_uri;
}

server {
    listen 443 ssl;
    server_name app.<domain>.net;

    root /home/<domain>/www/site/public;

    location / {
        index index.php;
        try_files $uri $uri/ /index.php?q=$uri&$args;
    }

    error_page 404 /index.php;

    location ~ \.php? {
        include fastcgi_params;
        fastcgi_index index.php;
        fastcgi_pass unix:/var/run/php5-fpm.<domain>.sock;
        fastcgi_split_path_info ^(.+\.php)(/.+)$;
        fastcgi_param PATH_INFO $fastcgi_path_info;
        fastcgi_param PATH_TRANSLATED $document_root$fastcgi_path_info;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    }

    ssl on;
    ssl_certificate /etc/nginx/ssl/<domain>/ssl-bundle.crt;
    ssl_certificate_key /etc/nginx/ssl/<domain>/<domain>.key;
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
    ssl_ciphers 'ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:DHE-R$
    ssl_prefer_server_ciphers on;

    access_log /home/<domain>/logs/access.log;
    error_log /home/<domain>/logs/error.log;
}

Это мой файл конфигурации для моего конкретного сайта. Прямо сейчас, когда я захожу в app..net, я попадаю на www..com, я понятия не имею, в чем проблема.

РЕДАКТИРОВАТЬ:

Если я изменю файл конфигурации на следующее:

server {
    server_name <domain>.net www.<domain>.net;
    return 301 http://<domain>.net$request_uri;
}

server {
    server_name app.<domain>.net;

    root /home/<domain>/www/site/public;

    location / {
        index index.php;
        try_files $uri $uri/ /index.php?q=$uri&$args;
    }

    error_page 404 /index.php;

    location ~ \.php? {
        include fastcgi_params;
        fastcgi_index index.php;
        fastcgi_pass unix:/var/run/php5-fpm.<domain>.sock;
        fastcgi_split_path_info ^(.+\.php)(/.+)$;
        fastcgi_param PATH_INFO $fastcgi_path_info;
        fastcgi_param PATH_TRANSLATED $document_root$fastcgi_path_info;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    }

    ssl on;
    ssl_certificate /etc/nginx/ssl/<domain>/ssl-bundle.crt;
    ssl_certificate_key /etc/nginx/ssl/<domain>/<domain>.key;
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
    ssl_ciphers 'ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:DHE-R$    ssl_prefer_server_ciphers on;

    access_log /home/<domain>/logs/access.log;
    error_log /home/<domain>/logs/error.log;
}

Затем я оказываюсь на правой странице, но без https

-1
задан 1 September 2016 в 13:52
2 ответа

Этот блок сервера из вашей отредактированной конфигурации:

server {
    server_name <domain>.net www.<domain>.net;
    return 301 http://<domain>.net$request_uri;
}

не имеет смысла и просто создает бесконечный цикл перенаправления: с http: // .net / обратно на http: // <домен> .net / .

Если основной адрес - https: // app ..net / и вы хотите, чтобы пользователи перенаправлялись туда (и всегда с https), просто напишите:

server {
   server_name <domain>.net www.<domain>.net app.<domain>.net;
   return 301 https://app.<domain>.net/;
}

server {
   server_name app.<domain>.net;
   listen 443;
   ssl on;
   ...
}

Если в конфигурации nginx нет других блоков {} серверов, первый черный можно записать как

server {
   server_name _;
   listen 80 default_server;
   return 301 https://app.<domain>.net/;
}

Также проверьте, как настроено приложение PHP - может быть какое-то перенаправление, отправленное приложением.

0
ответ дан 5 December 2019 в 20:27

Насколько я понимаю, ваш домен не имеет перенаправления с HTTP на HTTPS.

Это объясняет, что без прослушивания порта 80 для этого домена NGINX вернется к значениям по умолчанию сервер, который, как я полагаю, является вашим основным доменом.

В любом случае, если вам нужен автоматический HTTPS в app..net, вы должны добавить app..net в первый блок, который перенаправляет HTTP на HTTPS.

0
ответ дан 5 December 2019 в 20:27

Теги

Похожие вопросы