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

Поддомен Nginx с использованием FastCGI-Mono-Server4

У меня есть 1 поддомен в дополнение к основному сайту, все они работают на nginx + fastcgi-mono-server4.

ПРОБЛЕМА: Я должен заставить субдомен использовать другой порт (порт 81) для всех файлов .conf / .webapp, иначе, когда я захожу subdomain.example.com, он всегда отображает контент для example.com вместо. Кажется, проблема в моем файле .webapp. Отображение правильного веб-сайта частично работает, если я "взламываю" его и использую порт 81 для поддомена: https://stackoverflow.com/questions/28872585/how-to-handle-multiple-websites-through-fastcgi-server

Ниже приведены файлы .conf nginx для каждого веб-сайта:

##### SUBDOMAIN #####
server {
server_name subdomain.example.com;
root /subdomain;

listen 81;

location / {
fastcgi_index Default.aspx;
fastcgi_pass 127.0.0.1:9000;
include /opt/nginx/conf/fastcgi_params;
}

##### MAINWEBSITE #####
server {
    server_name example.com;
    root /mainwebsite;
    listen 80;

    location / {
    fastcgi_index Default.aspx;
    fastcgi_pass 127.0.0.1:9000;
    include /opt/nginx/conf/fastcgi_params;
    }

Далее идут файлы .webapp, необходимые для fastcgi-mono-server4 (ОБА находятся в той же папке / nginx / webapps):

##### SUBDOMAIN #####
<apps>
<web-application>
        <name>subdomain</name>
        <vhost>*</vhost>
        <vport>81</vport>
        <vpath>/</vpath>
        <path>/subdomain</path>
</web-application>
</apps>

##### MAINWEBSITE #####
<apps>
<web-application>
        <name>subdomain</name>
        <vhost>*</vhost>
        <vport>80</vport>
        <vpath>/</vpath>
        <path>/mainwebsite</path>
</web-application>
</apps>

Чтобы запустить процесс fastcgi, я запускаю следующую команду:

fastcgi-mono-server4.exe --appconfigdir /nginx/webapps /socket=tcp:127.0.0.1:9000 /logfile=/opt/nginx/logs/fastcgi.log &

Думал, что обновлю свои выводы и опубликую то, чем я закончил. Сервис fastcgi-mono-server4 не может выполнять интеллектуальную маршрутизацию, как nginx, поэтому мы либо должны использовать <vport> или <vpath> в .webapp файл для перенаправления. Я исключил <vport> (:81) потому что это выглядит некрасиво, и необходимость открывать порт 81 в брандмауэре не подходит.

Итак, меньшее из двух зол и решение, которое я в итоге использовал, - это добавить небольшое дополнение к обоим nginx.conf и .webapp файлы (добавление пути "/ m" к файлам)

Конечный URL-адрес будет: subdomain.example.com/m

##### SUBDOMAIN #####
server {
    server_name subdomain.example.com;
    listen 80;

    //Addition of "/m" for location
    location /m {
    root /mainwebsite;
    fastcgi_index Default.aspx;
    fastcgi_pass 127.0.0.1:9000;
    include /opt/nginx/conf/fastcgi_params;
    }

Содержимое файла .webapp:

##### SUBDOMAIN #####
<apps>
<web-application>
        <name>subdomain</name>
        <vhost>*</vhost>
        <vport>80</vport>
        <vpath>/m</vpath>   //Addition of "/m" for <vpath>
        <path>/subdomain</path>
</web-application>
</apps>