Когда я запускаю команду для проверки своей конфигурации, я получаю сообщение об ошибке, в котором говорится, что есть несколько дубликатов для [::]:80
. До этого у меня была проблема с дублированием нескольких серверов по умолчанию.
Когда у меня возникла проблема с несколькими серверами по умолчанию, мой файл выглядел так
server {
listen 80 default_server;
listen [::]:80 default_server ipv6only=on;
root /usr/share/nginx/html;
index index.php index.html index.htm;
server_name munki;
error_page 404 /404.html;
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
location /report {
try_files $uri $uri/ =404;
}
location ~ \.php$ {
try_files $uri =404;
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass unix:/var/run/php5-fpm.sock;
fastcgi_index index.php;
include fastcgi_params;
}
location /munki_repo/ {
alias /usr/local/munki_repo/;
autoindex off;
auth_basic "Restricted";
auth_basic_user_file /etc/nginx/.htpasswd;
}
}
Чтобы решить эту проблему, я изменил конфигурацию на:
server {
listen 80;
listen [::]:80 ipv6only=on;
root /usr/share/nginx/html;
index index.php index.html index.htm;
server_name munki;
error_page 404 /404.html;
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
location /report {
try_files $uri $uri/ =404;
}
location ~ \.php$ {
try_files $uri =404;
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass unix:/var/run/php5-fpm.sock;
fastcgi_index index.php;
include fastcgi_params;
}
location /munki_repo/ {
alias /usr/local/munki_repo/;
autoindex off;
auth_basic "Restricted";
auth_basic_user_file /etc/nginx/.htpasswd;
}
}
После изменения я начал получать ошибку «повторяющиеся параметры для [::]: 80». Я не уверен, что я делаю не так. Я впервые работаю с Nginx. Есть идеи, в чем может быть проблема?
Я создаю ответ из своего предыдущего комментария.
Отправьте сообщение об ошибке (nginx -t
вывод), так как он может содержать полезную информацию.
Какая у вас версия nginx? Вариант ipv6only=on
могут больше не понадобиться и, наоборот, могут создать проблемы. У меня есть это в моем серверном блоке, и он отлично работает:
listen 80;
listen [::]:80;
Есть ли у вас какие-либо другие серверные блоки, которые вы не публиковали, которые могут конфликтовать друг с другом?
Пояснение: читаем текущий (1.13) nginx документация:
ipv6only=on|off
этот параметр (0.7.42) определяет (черезIPV6_V6ONLY
параметр сокета), прослушивает ли сокет IPv6 адрес с подстановочными знаками[::]
будет принимать только соединения IPv6 или соединения IPv6 и IPv4. По умолчанию этот параметр включен. Его можно установить только один раз при запуске.
По умолчанию этот параметр включен означает, что вы не должны использовать ipv6only=on
. Это не приносит никакой пользы и потенциально может создать проблемы (см. Следующий пункт).
Его можно установить только один раз означает, что если он у вас был более одного раза везде в вашей конфигурации (например, в разных серверных блоках) он выдаст ошибку: nginx: [emerg] duplicate listen options for [::]:80
.