Назад | Перейти на главную страницу

Конфигурация Nginx для домена и поддомена

Я новичок в Nginx.

Моей основной целью было разместить два веб-сайта для одного домена. Я хотел, чтобы поддомен размещался отдельно от основного домена, например:

Поскольку я запускаю все это на одном сервере, я считаю, что это невозможно, потому что у них одинаковый IP-адрес.

Теперь я пытаюсь разобраться с этим, используя подкаталоги. Если я перейду на example.com/wp, он должен показать второй сайт.

Текущая конфигурация сайта Nginx выглядит так:

server {
    listen 80 default_server;
    listen [::]:80 default_server;

    return 301 https://my-domain.com$request_uri;
}

server {
    access_log /var/log/nginx/scripts.log scripts;

    listen 443 ssl http2;
    listen [::]:443 ssl http2;

    ssl_certificate /etc/ssl/my-domain.com.pem;
    ssl_certificate_key /etc/ssl/_.my-domain.com_private_key.key;
    server_name my-domain.com www.my-domain.com;
   location / {

            root /home/pi/Documents/vue_website/dist;
            index index.html;
    }

    location /wp {
            root /var/www/html/;

            location ~ \.php$ {
                 try_files $uri =404;
                 fastcgi_split_path_info ^(.+\.php)(/.+)$;
                 fastcgi_pass 172.0.0.1:9000;
                 fastcgi_index index.php;
                 include fastcgi_params;
            }
    }

}

Но это не работает. Буду признателен за любую помощь.

РЕДАКТИРОВАТЬ: Итак, теперь у меня работает поддомен. Но теперь проблема в том, что я могу добраться до него только по ssl / набрав https впереди, чего я не хочу.

Итак, теперь я пытаюсь перенаправить HTTP-запрос на данный сайт на основе искомого домена.

так, например, если я пойду в http://my-domain.com перенаправить меня на https и так далее.

Код, который я получил, выглядит следующим образом:

        'my-domain.com' '1';
        'wp.my-domain.com' '2';
}

server {
        listen 80;

        if ($new = '1') {
                return 301 https://my-domain.com$request_uri;
        }

        if ($new = '2') {
                return 301 https://wp.my-domain.com$request_uri;
        }
}

У меня что-то не так в Кодексе, потому что, на мой взгляд, он должен работать именно так, если я правильно его понял.

Ваше предположение, что вы не можете разместить несколько веб-сайтов на одном IP-адресе, неверно. Вы можете разместить столько веб-сайтов на IP-адресе, сколько захотите, используя http или https. Вы также можете размещать различный контент, используя вложенные папки, если хотите.

Настройка поддоменов довольно тривиальна, вы просто используете два серверных блока.

server {
  server_name example.com;
  listen 443 ssl http2;
  // Add other required SSL entries
  root     /var/www/site1;
}

server {
  server_name subdomain.example2.com;
  listen 443 ssl http2;
  // Add other required SSL entries
  root     /var/www/site2;
}

Конфигурация с подпапками вы делаете это

server {
  server_name example.com;
  listen 443 ssl http2;
  // Add other required SSL entries
  location / {
    root     /var/www/site1;
  }
  location /subdir {
    root     /var/www/site2;
  }
}

Если вам нужна дополнительная помощь, отредактируйте свой вопрос и опишите подробнее, чем «это не работает». В идеале вы должны поделиться завитком URL-адреса, соответствующей записью журнала доступа и ошибок, а также полезными журналами PHP / приложений и ожидаемым поведением.