Existem duas maneiras de conseguir isso. Ou você faz tudo por endereço IP, com locais de subpastas, ou precisa comprar um domínio one e, em seguida, tem vários subdomínios nesse domínio (subdomínios não devem custar nada, se você comprar o domínio, mas verifique com seu registrador).
Eu não aconselho o método de endereço IP apenas porque é muito ruim ter que lembrar de endereços IP, e se você tentar compartilhar informações com outras pessoas, você também tem o mesmo problema de outras pessoas se lembrarem do endereço IP. Endereço IP.
O one-IP, muitas subpastas se aproximam, sem um nome de domínio
AVISO! Não temos informações sobre seus projetos em que você está trabalhando. Precisamos saber mais para determinar se você pode fazer essa abordagem, pois muitos frameworks da Web não funcionarão sem um verdadeiro nome de domínio vinculado a ele.
No lado nginx
, precisamos fazer uma abordagem 'mal' para isso - um endereço IP, muitos locais de docroots e subpastas. Esta é uma abordagem muito malvada e pode causar muitos problemas com alguns frameworks web.
Supondo que um nginx
padrão seja instalado como uma base dos repositórios, temos que criar uma configuração de site para manipular cada solicitação de subdiretório do projeto. Então nós temos que criar uma ligação simbólica no local certo.
Crie /etc/nginx/sites-available/my-projects
com o seguinte (use isso como um modelo / guia - ele assume três projetos com HTML estático e nenhum aplicativo dinâmico da Web em PHP ou python ou similar, e você pode copiar os blocos de localização individuais e criar novos locais em conformidade, também assume que o IP do seu servidor é 1.2.3.4
).
server {
listen 80 default_server;
server_name 1.2.3.4;
location / {
return 410; # Default root of site won't exist.
}
location /proj1/ {
root /var/www/proj1;
try_files $uri $uri/ =404;
# any additional configuration for non-static content
}
location /proj2/ {
root /var/www/proj2;
try_files $uri $uri/ =404;
# any additional configuration for non-static content
}
location /proj3/ {
root /var/www/proj3;
try_files $uri $uri/ =404;
# any additional configuration for non-static content
}
}
Agora, substituímos a configuração padrão (removê-la) e adicionamos a nossa:
sudo rm /etc/nginx/sites-enabled/default
sudo ln -s /etc/nginx/sites-available/my-projects /etc/nginx/sites-enabled
Em seguida, reinicie o nginx
service:
# If on 14.04, use this:
sudo service nginx restart
# If on 15.10 or newer, use this:
sudo systemctl restart nginx
A abordagem de vários subdomínios com um domínio.
Esta seção de respostas pressupõe que você tenha um domínio e vários subdomínios. Se você não tem isso, por favor, esclarecer isso na sua pergunta
Com cada bloco nginx
server {}
na configuração, você precisará definir o nome do servidor e, provavelmente, definir um quarto bloco de servidor como 'capturar tudo' para outras solicitações.
Exemplo: tenho três projetos,
proj1
,proj2
,proj3
. Eu tenho um domínio chamadoevil-projects.net
(NOTA: não existe realmente). Eu quero três subdomínios diferentes, um para cada configuraçãonginx
, que apontará para um projeto cada. Meu servidor reside em 1.2.3.4 e servirá todos os sites.
Com o cenário acima, temos duas partes: domínios e subdomínios e a configuração do servidor.
(1): Configuração do DNS
Configure seu DNS em seu host de forma que o seguinte seja verdadeiro com os registros de DNS:
evil-projects.net IN A 1.2.3.4
proj1.evil-projects.net IN A 1.2.3.4
proj2.evil-projects.net IN A 1.2.3.4
proj3.evil-projects.net IN A 1.2.3.4
(2): configuração do NGINX no servidor (1.2.3.4)
Agora, para as configurações de nginx
. Eu estou supondo que você vai ter as configurações nginx padrão e os pacotes dos Repositórios (eu vou usar 14.04 como um exemplo de base). Teremos quatro arquivos de configuração colocados em /etc/nginx/sites-available
, primeiro. Talvez seja necessário usar sudo
ao criar esses arquivos, pois a pasta em questão pertence a root
.
/etc/nginx/sites-available/catch-all
- este será o 'catch all' para todos os domínios não válidos. Eu gosto de retornar o código de erro http 410 (GONE).
server {
listen 80 default_server;
server_name _;
return 410;
}
Em seguida, configuramos a configuração dos seus sites / projetos. Eu vou assumir que eles são todos arquivos estáticos, no entanto. Cada um deles implica que você também tem diferentes diretórios da web para cada projeto no servidor (diferentes 'document root').
/etc/nginx/sites-available/proj1.evil-projects.net
:
server {
listen 80;
server_name proj1.evil-projects.net;
root /var/www/proj1;
index index.htm index.html;
location / {
try_files $uri $uri/ =404;
}
}
/etc/nginx/sites-available/proj2.evil-projects.net
:
server {
listen 80;
server_name proj2.evil-projects.net;
root /var/www/proj2;
index index.htm index.html;
location / {
try_files $uri $uri/ =404;
}
}
/etc/nginx/sites-available/proj3.evil-projects.net
:
server {
listen 80;
server_name proj3.evil-projects.net;
root /var/www/proj3;
index index.htm index.html;
location / {
try_files $uri $uri/ =404;
}
}
Em seguida, temos que remover a configuração 'padrão' de /etc/nginx/sites-enabled
e adicionar a nossa. Novamente, sudo
é necessário aqui.
sudo rm /etc/nginx/sites-enabled/default
sudo ln -s /etc/nginx/sites-available/proj1.evil-projects.net /etc/nginx/sites-enabled/
sudo ln -s /etc/nginx/sites-available/proj2.evil-projects.net /etc/nginx/sites-enabled/
sudo ln -s /etc/nginx/sites-available/proj3.evil-projects.net /etc/nginx/sites-enabled/
E então, reiniciámos o processo nginx
:
# If on 14.04, use this:
sudo service nginx restart
# If on 15.04 or newer, use this:
sudo systemctl restart nginx
Quando o DNS se propaga, os sites funcionam como deveriam.