Я совершенно новичок в NGINX, никогда даже не трогал его, однако я нахожусь в небольшой ситуации, когда поиск в Интернете указывает на необходимость его использования.

Моя ситуация такова:

У меня есть 1 сервер (Windows Server), и я хочу запустить два FTP-сервера и два веб-сервера. Теперь я знаю, что не могу разместить два приложения на одном и том же порту (скажем, порт 80 для обоих веб-серверов и т.д.), И поэтому мне придется размещать их на разных портах.

Допустим, в этой ситуации у меня есть два поддоменов one.example.com и two.example.com . Оба из этих поддоменов указывают на IP-адрес моего сервера 1.2.3.4 . В любой нормальной ситуации доступ к любому веб-серверу и любому FTP-серверу через любой поддомен будет возможен на разных назначенных мной портах. Это не то, что я хочу.

Я хотел бы иметь один FTP-сервер и один веб-сервер на одном поддомене, а также на портах 21 и 80, и другой FTP-сервер и веб-сервер на другом поддомене, и снова на портах 21 и 80.

Насколько я могу судить, мне нужно сделать так, чтобы вы могли получить доступ только к определенным вещам (фильтрующим) в определенных поддоменах, а порты этих вещей (21 и 80) транслировались в другие порты на сервере (как вы можете '). два приложения находятся на одном порту).

Если бы я мог, я хотел бы запустить NGINX на сервере Windows, но если нет, то мне действительно нужно, чтобы он работал на чем-то маленьком, например, на Raspberry Pi, даже если для этого мой Pi должен быть шлюзом между Интернетом и моей сетью.

РЕДАКТИРОВАТЬ: для меня важно отметить, что я собираюсь запустить на этом сервере больше, чем просто FTP и HTTP, поэтому трансляция портов и фильтрация домена должны работать на любом приложении сокетов, а не только на FTP, HTTP и т.д. Если NGINX не является решением, любое другое рабочее решение в порядке.

1 ответ1

0

ngnix намного проще в Linux - по крайней мере, документировано. У меня такое чувство, что мы должны начать с самого начала. Обычно ngnix работает «из коробки», хотя вам нужно отдельно настроить такие вещи, как php - нет эквивалента мод-прокси.

В любом современном HTTP-сервере есть немного виртуальных хостов. в ngnix вы можете настроить их как отдельный файл или как отдельные файлы. Этот тип не будет работать на FTP - но есть обходные пути. (Ngnix называет это серверными блоками, но такая же разница).

Просто создайте отдельные учетные записи в ftp с разными именами пользователей, паролями и каталогами rood.

Virtualhosts работает только по протоколам http и https и в основном представляет собой способ направления трафика в разных доменах на разные маршруты, позволяя запускать несколько служб в разных корневых каталогах на основе имени хоста. Например, вы можете запустить два экземпляра WordPress на одном сервере с в основном отдельными файлами.

Я ленивый - у меня есть один файл конфигурации на домен. Если вы используете это в Windows - посмотрите соответствующую документацию для деталей.

Вы захотите найти, где находятся файлы конфигурации для каждого сайта - мои находятся в /etc /ngnix /sites-available, и они связаны с сайтами с поддержкой. это может на основе платформы

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

Вы можете отредактировать это (я не рекомендую это) или создать файл конфигурации для каждого сайта в той же папке. Это пример того, который я использую. Это отменяет значения по умолчанию

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;
        }
}

Итак, более или менее, я говорю ему слушать порт 80 на ipv4 и 6, сообщать ему имя хоста для прослушивания и некоторые другие вещи, связанные с php.

Если я изменю root и меняю new.example.com на new2.example.com и меняю root, он будет отправлять любые запросы на new2.example.com к содержимому в новом root. Например, вы можете запустить 2 копии WordPress на одном сервере с разными доменами. Я создаю один из них с соответствующими server_name и root для домена в сайтах с поддержкой, символическую ссылку на них с сайтами (может работать по-разному в Windows) и перезагружаю мою конфигурацию nginix.

Предполагая, что вы пытаетесь прокси У вас будет один или несколько серверов на разных портах. ngnix сидит впереди прямого движения

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;
 }

}

Рассмотрим этот файл конфигурации - я не уверен, что он действительно будет работать (я использую HTTPS-версию), но для этого нужны документы . Он будет прослушивать порт 80 для домена matrix.example.com.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .