Когда я пытаюсь запустить следующий host.conf с помощью команды «nginx -c /etc/nginx/conf/host.conf», это не удается. у меня ошибка

Error: 

[emerg] 1#1: invalid number of arguments in "return" directive in /etc/nginx/conf/host.conf:54
nginx: [emerg] invalid number of arguments in "return" directive in /etc/nginx/conf/host.conf:54

Хост.конф:

stream {   

    upstream test {
        server 110.10.0.1:4000;
    }

    server {
        listen 443;
        proxy_pass test;
        ssl_preread on;
        proxy_protocol on;
    }

    server {
        listen 80;
        return 301 https://$host$request_uri;
    }
}

Я использую nginx: 1.17.10 и понятия не имею, почему это не работает. Есть идеи?

1
Patric 25 Апр 2020 в 13:26
Вы перепутали директиву return из модуля stream с директивой return из модуля http. См. этот документ.
 – 
Richard Smith
25 Апр 2020 в 14:07
Спасибо @RichardSmith за ответ. Есть ли способ перенаправить весь HTTP-трафик на HTTPS в потоковом модуле?
 – 
Patric
25 Апр 2020 в 14:09
Или я могу использовать оба модуля одновременно?
 – 
Patric
25 Апр 2020 в 14:21
В моем случае я забыл точку с запятой в конце строки.
 – 
DustWolf
14 Июн 2022 в 16:14

1 ответ

Вы можете добавить модуль http, например

stream {   

    upstream test {
        server 110.10.0.1:4000;
    }

    server {
        listen 443;
        proxy_pass test;
        ssl_preread on;
        proxy_protocol on;
    }
}

http {
   server {
        listen 80 default_server;
        listen [::]:80 default_server;
        server_name _;
        return 301 https://$host$request_uri;
   }
}

Эта работа для меня

-1
Palazur 9 Апр 2021 в 15:21