Vários servidores de um host, filtragem em domínios e subdomínios e conversão de porta -NGINX

0

Sou completamente novo no NGINX, nunca toquei nele, no entanto, estou em uma pequena situação em que procurar pontos on-line é necessário para usá-lo.

Minha situação é esta:

Eu tenho 1 servidor (Windows Server) e quero executar dois servidores FTP e dois servidores web. Agora, eu sei que não posso hospedar dois aplicativos na mesma porta (digamos, porta 80 para ambos os servidores web, etc) e, portanto, vou ter que colocá-los em portas diferentes.

Para essa situação, digamos que eu tenha dois subdomínios one.example.com e two.example.com . Ambos os subdomínios apontam para o endereço IP do meu servidor 1.2.3.4 . Em qualquer situação normal, será possível acessar o servidor da Web e o servidor FTP por meio do subdomínio, nas diferentes portas que eu designei. Não é isso que eu quero.

O que eu gostaria de fazer é ter um servidor FTP e um servidor web em um subdomínio, e nas portas 21 e 80, e outro servidor FTP e servidor web no outro subdomínio, e novamente nas portas 21 e 80.

Tanto quanto eu posso dizer, eu preciso fazer com que você só possa acessar certas coisas (filtrar) em certos subdomínios, e as portas dessas coisas (21 e 80) sejam traduzidas para outras portas no servidor (como você não pode ter dois aplicativos residindo em uma porta).

Se eu puder, gostaria de rodar o NGINX no servidor windows, mas se não, eu realmente precisaria que ele fosse executado em algo pequeno como o meu Raspberry Pi, mesmo que isso requeira que meu Pi seja um gateway entre a Internet e minha rede.

EDIT: É importante para mim notar aqui que eu pretendo executar mais do que apenas FTP e HTTP neste servidor, então esta tradução de porta e filtragem de domínio precisa funcionar em qualquer tipo de aplicativo de soquete, não apenas FTP, HTTP etc. Se o NGINX não for a solução, qualquer outra solução de trabalho é válida.

    
por DevelopedLogic 14.02.2018 / 07:23

1 resposta

0

ngnix é muito mais fácil no linux - pelo menos documentação. Tenho a sensação de que vamos ter que começar no início. O ngnix normalmente funciona fora da caixa, embora você precise configurar coisas como php separadamente - não há equivalente de proxy mod.

Em qualquer servidor HTTP moderno há algum sabor de virtualhosts. no ngnix você pode configurá-los como um único arquivo ou separar arquivos. Esse tipo de trabalho não funciona no FTP - mas há soluções alternativas. ( Ngnix o chama de blocos de servidores, mas a mesma diferença ).

Basta ter contas separadas no ftp com nomes de usuários, senhas e diretórios de rood diferentes.

Virtualhosts só funciona em http e https e, basicamente, é uma maneira de direcionar o tráfego em diferentes domínios, para diferentes rotas, permitindo que você execute vários serviços em diferentes diretórios raiz com base no nome do host. Por exemplo, você pode executar duas instâncias do wordpress no mesmo servidor, com arquivos principalmente separados.

Eu sou preguiçoso - tenho um arquivo de configuração por domínio. Se você estiver executando isso no Windows, consulte a documentação apropriada para obter detalhes.

Você vai querer localizar onde estão os arquivos de configuração por site - os meus estão em / etc / ngnix / sites-available, e estes são links simbólicos para sites habilitados. isso pode ser baseado na plataforma

Você sempre tem uma configuração padrão que é sensata e deve funcionar. É chato e você pode lê-lo para entender quais são as várias opções.

Você pode editar isso (não recomendo) ou criar um arquivo de configuração por site na mesma pasta. Este é um exemplo do que eu uso. Isso substitui os padrões

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


        root /var/www/html/new;

        # Add index.php to the list if you are using PHP
        index index.html index.htm index.nginx-debian.html index.php;

        server_name new.example.com;

        location / {
                # First attempt to serve request as file, then
                # as directory, then fall back to displaying a 404.
                try_files $uri $uri/ =404;
        }

        # pass the PHP scripts to FastCGI server via unix socks
        #
        location ~ \.php$ {
                include snippets/fastcgi-php.conf;

                fastcgi_pass unix:/run/php/php7.0-fpm.sock;
        }

        # deny access to .htaccess files, if Apache's document root
        # concurs with nginx's one
        #
        location ~ /\.ht {
                deny all;
        }
}

Então, mais ou menos, eu digo para ouvir a porta 80, no ipv4 e 6, dizer o nome do host para ouvir, e algumas outras coisas relacionadas ao php.

Se eu mudar o root e trocar new.example.com por new2.example.com e alterar a raiz, ele enviará solicitações para new2.example.com para o conteúdo na nova raiz. Você pode, por exemplo, executar 2 cópias do wordpress no mesmo servidor com diferentes domínios dessa maneira. Eu crio um desses com o nome_do_servidor e raiz apropriados por domínio em sites habilitados, crie links simbólicos para sites habilitados (pode funcionar de maneira diferente em janelas) e recarregue minha configuração nginix.

Supondo que você esteja tentando proxy , você teria um ou mais servidores em portas diferentes. ngnix fica na frente para direcionar o tráfego

server {
        listen 80;
        listen [::]:80;
        server_name matrix.example.com;



        location /_matrix {
        proxy_pass http://localhost:8008;
        proxy_set_header X-Forwarded-For $remote_addr;
 }

}

Considere este arquivo de configuração - não sei se ele realmente funcionará (eu executo uma versão com HTTPS do presente), mas é isso que docs são para. Ele vai ouvir na porta 80, para o domínio matrix.example.com.

    
por 14.02.2018 / 08:12