Então, eu estou usando oceano digital e nginx. Quero hospedar vários sites (meus projetos), mas não quero comprar um domínio para cada um.
Existe uma maneira de hospedar vários sites no nginx e oceano digital enquanto os acessa usando esse único ip?
X.Y.Z.W/foo
,X.Y.Z.W/bar
)? Por que você não pode obter domínios para eles? (Você pode atribuir o mesmo IP a vários domínios)?Respostas:
Existem duas maneiras de conseguir isso. Você faz tudo por endereço IP, com locais de subpastas ou precisará comprar um domínio e, em seguida, terá vários subdomínios nesse domínio (os 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 endereços IP, e se você tentar compartilhar informações com outras pessoas, também terá o mesmo problema de outras pessoas terem que se lembrar do endereço IP.
A abordagem de um único IP, muitas subpastas, sem um nome de domínio
Por
nginx
outro lado, precisamos fazer uma abordagem "malvada" para isso - um endereço IP, muitos documentos e localizações de subpastas. Essa é uma abordagem muito maléfica e pode causar muitos problemas em algumas estruturas da web.Assumindo uma
nginx
instalação padrão como base a partir dos repositórios, precisamos criar uma configuração de site para lidar com cada solicitação de subdiretório do projeto. Em seguida, precisamos vincular o link no local certo.Crie
/etc/nginx/sites-available/my-projects
com o seguinte (use-o como um modelo / guia - ele assume três projetos com HTML estático e sem aplicativos dinâmicos da web em PHP ou python ou similar, e você pode copiar os blocos de localização individuais e criar novos locais de acordo; IP do servidor é1.2.3.4
).Agora substituímos a configuração padrão (remova-a) e adicionamos a nossa:
E, em seguida, reinicie o
nginx
serviço:A abordagem de um único domínio e vários subdomínios.
Com cada
nginx
server {}
bloco na configuração, você precisará definir o nome do servidor e provavelmente definir um quarto bloco de servidor como um 'catch all' para outras solicitações.No cenário acima, temos duas partes: domínios e subdomínios e a configuração do servidor.
(1): Configuração de DNS
Configure seu DNS no seu host de forma que o seguinte seja verdadeiro com os registros DNS:
(2): configuração do NGINX no servidor (1.2.3.4)
Agora para suas
nginx
configurações. Estou assumindo que você terá as configurações padrão do nginx e os pacotes dos Repositórios (vou usar o 14.04 como um exemplo básico)./etc/nginx/sites-available
Primeiro, colocaremos quatro arquivos de configuração . Pode ser necessário usarsudo
ao criar esses arquivos, pois a pasta em questão pertenceroot
./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).Em seguida, definimos a configuração para seus sites / projetos. Eu vou assumir que todos eles são arquivos estáticos. Cada um deles implica que você também possui diretórios da web diferentes para cada projeto no servidor (diferentes 'raízes do documento').
/etc/nginx/sites-available/proj1.evil-projects.net
:/etc/nginx/sites-available/proj2.evil-projects.net
:/etc/nginx/sites-available/proj3.evil-projects.net
:Em seguida, precisamos remover a configuração 'padrão'
/etc/nginx/sites-enabled
e adicionar a nossa. Novamente,sudo
é necessário aqui.E então reiniciaremos o
nginx
processo:Depois que o DNS se propagar, os sites funcionarão como deveriam.
fonte