@IliaMal

Почему не работает редирект в конфигах nginx?

Здравствуйте.

Необходимо организовать редирект на https для нескольких доменов.
На первом домене site1.ru (первым был настроен и первый в каталоге /etc/nginx/sites-available/) после внесения следующих настроик конфига:
server {
root /var/www/site1.ru/public_html;
index index.php index.html index.htm;
server_name site1.ru www.site1.ru;   

    listen site1.ru:443 ssl; # default_server;

    ssl_certificate /etc/letsencrypt/live/site1.ru/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/site1.ru/privkey.pem;
    ssl_trusted_certificate /etc/letsencrypt/live/site1.ru/chain.pem;

    ssl_stapling on;
    ssl_stapling_verify on;
    resolver site1.ru 8.8.8.8;

    # exclude returning to the http-version of the site
	 add_header Strict-Transport-Security "max-age=31536000";

    # Break all images in the  http://
    add_header Content-Security-Policy "img-src https: data:; upgrade-insecure-requests";

#	return 301 http://$host$request_uri;

location / {
try_files $uri /index.php$is_args$args;
}
location ~ \.php$ {
	try_files $uri =404;
	fastcgi_split_path_info ^(.+\.php)(/.+)$;
	fastcgi_pass unix:/var/run/php7.2-fpm-site1.sock;
	fastcgi_index index.php;
	fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
	include fastcgi_params;
	fastcgi_send_timeout 333;
	fastcgi_read_timeout 333;
}

# Add key's SSL
include acme;

location ^~ /.well-known/acme-challenge/ {
	allow all;
	default_type "text/plain";
	}
}

редирект работает корректно, хотя для 80 порта server{} не прописан, site2.ru и site3.ru не перенаправляет.
Если добавить в конфиги:
server {
  server_name site2.ru www.site2.ru;
  listen site2.ru:80;
  return 301 https://$host$request_uri;
}

То при попцтике перезапустить nginx выдает следующую ошибку:
Mar 29 05:07:41 277342-cl20517.tmweb.ru nginx[25570]: nginx: [emerg] still could not bind()
Mar 29 05:07:41 277342-cl20517.tmweb.ru systemd[1]: nginx.service: Control process exited, code=exited status=1
Mar 29 05:07:41 277342-cl20517.tmweb.ru systemd[1]: nginx.service: Failed with result 'exit-code'.
Mar 29 05:07:41 277342-cl20517.tmweb.ru systemd[1]: Failed to start A high performance web server and a reverse proxy server.
-- Subject: Unit nginx.service has failed
-- Defined-By: systemd
-- Support: http://www.ubuntu.com/support
--
-- Unit nginx.service has failed.
--
-- The result is RESULT.

Ничего конкретного в ошибке нет, не понимаю что он хочет.

Я удалил симлинк для default в /etc/nginx/sites-enabled/, не помогло.
В чем может быть проблема?

Сразу прикреплю /etc/nginx/nginx.conf:
user www-data;
worker_processes auto;
pid /run/nginx.pid;
include /etc/nginx/modules-enabled/*.conf;

events {
	worker_connections 768;
	# multi_accept on;
}

http {

	##
	# Basic Settings
	##

	fastcgi_cache_path /var/cache/ levels=1:2 keys_zone=MYCACHE:10m inactive=4h;
 	fastcgi_cache_key "$scheme$request_method$host$request_uri";

	sendfile on;
	tcp_nopush on;
	tcp_nodelay on;
	keepalive_timeout 65;
	types_hash_max_size 2048;
	# server_tokens off;

	# server_names_hash_bucket_size 64;
	# server_name_in_redirect off;

	include /etc/nginx/mime.types;
	default_type application/octet-stream;

	##
	# SSL Settings
	##

	ssl_protocols TLSv1 TLSv1.1 TLSv1.2; # Dropping SSLv3, ref: POODLE
	ssl_prefer_server_ciphers on;

	##
	# Logging Settings
	##

	access_log /var/log/nginx/access.log;
	error_log /var/log/nginx/error.log;

	##
	# Gzip Settings
	##

	gzip on;

	# gzip_vary on;
	# gzip_proxied any;
	# gzip_comp_level 6;
	# gzip_buffers 16 8k;
	# gzip_http_version 1.1;
	# gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;

	##
	# Virtual Host Configs
	##

	include /etc/nginx/conf.d/*.conf;
        include /etc/nginx/sites-enabled/*;

}
  • Вопрос задан
  • 1909 просмотров
Решения вопроса 2
@q2digger
никого не трогаю, починяю примус
что конкретно не нравится nginx-у выяснить очень просто.
поменяли конфиги, сделайте
nginx -t
если все нормально , делаете
nginx -s reload
конфиги перечитаются, изменения будут приняты.
Ответ написан
@IliaMal Автор вопроса
Проблема была в строчке
listen site1.ru:443 ssl; # default_server;
Необходимо написать за место домена ip сервера или оставить пустым.
При использовании данных конфигов добавлять запись:
server {
  server_name site2.ru www.site2.ru;
  listen site2.ru:80;
  return 301 https://$host$request_uri;
}

не требуется.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

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