Рейтинг:0

Как с помощью NGINX перенаправить www на не-www при использовании поддомена?

флаг jp

Я настраиваю веб-сайт с wordpress, используя NGINX и PHP-FPM.

backend.site.com для wordpress-бэкенда

site.comдля nuxt-frontend

Моя проблема

Когда я получаю доступ к внешнему интерфейсу, набрав www.site.com меня перенаправляют на backend.site.com

# /etc/nginx/conf.d/default.conf

сервер {
    слушать 80;

    вернуть 301 https://$host$request_uri;
}

сервер {
    слушать 443 ssl;
    ssl_certificate /etc/nginx/ssl/site.com_ssl_certificate.cer;
    ssl_certificate_key /etc/nginx/ssl/site.com_private_key.key;

    вернуть 301 https://$host$request_uri;
}
# /etc/nginx/conf.d/site.com.conf

карта $sent_http_content_type $expires {
    эпоха "текст/html";
    "текст/html; charset=utf-8" эпоха;
    по умолчанию выключено;
}

сервер {
    слушать 443 ssl;
    слушать [::]:443 ssl;

    ssl_certificate /etc/nginx/ssl/site.com_ssl_certificate.cer;
    ssl_certificate_key /etc/nginx/ssl/site.com_private_key.key;

    имя_сервера site.com www.site.com;

    gzip включен;
    gzip_types text/plain application/xml text/css application/javascript;
    gzip_min_length 1000;

    местоположение ^~ / {
        псевдоним /var/www/html/web-frontend/.nuxt/dist/client;

        истекает $expires;
        proxy_set_header Хост $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $ схема;
        proxy_read_timeout 1м;
        proxy_connect_timeout 1 м;
        прокси_пароль http://127.0.0.1:3000;
    }

    местоположение ~ /\.ht {
                отрицать все;
    }

    местоположение = /favicon.ico {
            log_not_found выключен; доступ_лог выключен;
    }

    местоположение = /robots.txt {
            log_not_found выключен; доступ_лог выключен; позволять все;
    }

    расположение ~* \.(css|gif|ico|jpeg|jpg|js|png)$ {
            истекает макс.;
            log_not_found выключен;
    }
}
# /etc/nginx/conf.d/backend.site.com.conf

сервер {
    # конфигурация SSL
    #
    слушать 443 ssl;
    слушать [::]:443 ssl;
    ssl_certificate /etc/nginx/ssl/site.com_ssl_certificate.cer;
    ssl_certificate_key /etc/nginx/ssl/site.com_private_key.key;

    корень /var/www/html/веб-бэкэнд/веб;

    # Добавьте index.php в список, если вы используете PHP
    индекс index.php;

    имя_сервера backend.site.com;

    gzip_vary включен;
    gzip_proxy любой;
    gzip_comp_level 6;
    gzip_buffers 16 8k;
    gzip_http_версия 1.1;
    gzip_min_length 0;
    gzip_types text/plain application/javascript text/css text/xml application/xml application/xml+rss text/javascript application/vnd.ms-fontobject application/x-font-ttf font/opentype;

    client_max_body_size 100M;

    место расположения / {
        try_files $uri $uri/ /index.php$is_args$args;
    }

    расположение ~ \.php$ {
            try_files $uri = 404;
            fastcgi_split_path_info ^(.+\.php)(/.+)$;
            fastcgi_pass unix:/run/php/php7.4-fpm.sock;
            fastcgi_index index.php;
            включить fastcgi_params;
            fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
            fastcgi_param SCRIPT_NAME $fastcgi_script_name;
        }

    местоположение ~ /\.ht {
            отрицать все;
    }

    местоположение = /favicon.ico {
            log_not_found выключен; доступ_лог выключен;
    }
    местоположение = /robots.txt {
            log_not_found выключен; доступ_лог выключен; позволять все;
    }
    расположение ~* \.(css|gif|ico|jpeg|jpg|js|png)$ {
            истекает макс.;
            log_not_found выключен;
    }

    #error_page 404 /404.html;

    # перенаправить страницы ошибок сервера на статическую страницу /50x.html
    #
    error_page 500 502 503 504 /50x.html;
    местоположение = /50x.html {
        корень /usr/share/nginx/html;
    }
}
Рейтинг:0
флаг cg

У вас есть некоторое непонимание того, как работает виртуальный хост. Проверьте эти пункты:

  1. Когда вы настраиваете виртуальный хост, вам нужно установить виртуальный хост для http (порт 80) и https (порт 443).
  2. Перенаправление вашего виртуального хоста на порт 80 на ваш виртуальный хост на порту 443.
  3. Помните, что всегда нужно обрабатывать входящий трафик вашего http (порт 80). Почему? Некоторые разработчики (я не знаю почему) используют один и тот же виртуальный хост для публикации два разных приложения, одно на порту 80, другое на 443.

Попробуйте добавить это для решения вашей проблемы

Эта конфигурация перенаправляет трафик, поступающий на 80 порт, на https.

сервер {
    слушать 80; 
    имя_сервера site.com www.site.com;
    access_log /var/log/nginx/site.com.access.log основной;
    error_log /var/log/nginx/site.com.error.log ошибка;
  
    место расположения / {
        вернуть 301 https://$host$request_uri;
    }
}

Перенаправлять входящий трафик на backend.site.com:80 порт в backend.site.com:443 виртуального хоста.

Примечание: я добавить :80 чтобы выделить через какой порт входящее соединение

сервер {
    слушать 80;
    имя_сервера backend.site.com;
    access_log /var/log/nginx/backend.site.com.access.log основной;
    error_log /var/log/nginx/backend.site.com.error.log ошибка;
   
    место расположения / {
        вернуть 301 https://$host$request_uri;
    }
}

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.