добрый день, мне хотелось бы обладать Вашей помощью, чтобы решать это сомнение, которое у меня есть на реализации развертывания ASPnet 5 (Core1, CoreCLR) на субдомене. я обладаю следующим:
Дав ему "dnx Веб", оно я функционирует в http://localhost:5000 Этом app у меня есть она под папкой в субдомене: http://subdominio.dominio.com/aspnet5/fx
Как я делаю ему для того, чтобы app функционировал в этой среде производства? Они рекомендовали мне делать docker контейнер с nginx (+reverse proxy) и эти выходные я увижу эту тему.
То, в чем ты нуждаешься, состоит в том, чтобы конфигурировать Апачи, как Повторно повернул Proxy так что просьбы, реализованные в каталог aspnet5/fx
были пересланы в твое приложение ASP.NET Core
http://subdominio.dominio.com/aspnet5/fx --> http://localhost:5000/aspnet5/fx
Шаги, чтобы реализовывать эту конфигурацию, - следующие:
Устанавливать и давать возможность модулям Апачи для Реверсе Прокси
sudo apt-get install libapache2-mod-proxy-html libxml2-dev
sudo a2enmod proxy proxy_ajp proxy_http rewrite deflate headers proxy_balancer proxy_connect proxy_html
sudo service apache2 restart
Изменять конфигурацию твоего веб сайта Апачи, чтобы добавлять перенаправление (обычно будь файлом 000-default.conf
помещенный в /etc/apache2/sites-enabled
)
<VirtualHost *:*>
...
ProxyPreserveHost On
ProxyPass /aspnet5/fx/ http://localhost:5000/aspnet5/fx/
ProxyPassReverse /aspnet5/fx/ http://localhost:5000/aspnet5/fx/
ServerName localhost
</VirtualHost>
Конфигурировать url http://localhost:5000/aspnet5/fx/
в приложении ASP.NET Core. Это делается добавляя в файле hosting.json
помещенный в корне проекта
{
"server.urls": "http://localhost:5000/aspnet5/fx/"
}
Вышеупомянутый шаг необходим для того, чтобы решили маршруты, что ссылаются на корень приложения, а именно, те, которые начинаются из-за
~/
но в версии RC1 не функционируй
То, что я рекомендую тебе, состоит в том, что ты веришь себе в другой субдомен aspnet5-fx.subdominio.dominio.com
что был тем, который предоставляет прямой доступ к твоему приложению ASP.NET Core.
В этом случае то, что ты был бы должен делать:
sudo nano /etc/apache2/sites-available/001-aspnet.conf
)Контент этого файла был бы следующей
<VirtualHost *:*>
ProxyPreserveHost On
ProxyPass / http://localhost:5000/
ProxyPassReverse / http://localhost:5000/
ServerName aspnet5-fx.subdominio.dominio.com
</VirtualHost>
В конце концов ты должен давать возможность новому веб сайту и перезагружать конфигурацию индейца-апачиа
sudo a2ensite 001-aspnet
sudo service apache2 reload
Что-то, что также важно, состоит в том, что файлы твоих приложений ASP.NET Core не были бы должны быть помещенными внутри каталога контента Апачи, а именно в /var/www/aspnet5/fx
, потому что, сделав reverse proxy
он не необходим, и если что-то не удается в конфигурации, им могло бы удаваться согласиться на файлы кода. Рекомендуемое состояло бы в том, чтобы состоять в том, чтобы находить нас, например, в /opt/aspnet5/fx
Сначала я хочу довести до сведения, что, чтобы "упаковывать" приложение, предварительно развертыванию, нужно использовать команду dnu publish
, чтобы видеть список выборов ты можешь использовать: dnu publish --help
.
После упаковывая, в папке, где клался результат набивки (ты можешь использовать выбор -o
чтобы это определять) будет папка approot
с утилитой web
, это будет та, которая назовется с сервера.
Нужно доводить до сведения что да возможно выставлять приложение без необходимости одного, повторно поверните proxy. Kestrel инициализируется под портом 500x и менять в порт 80 вынудило бы, чтобы использовать root. Ты можешь, если ты это желаешь, использовать iptables, чтобы пересылать просьбы в процесс kestrel в порту 500x, но это загрузилось бы, я думаю, сервер, который уже делает бизнес на этом порту.
Кроме упомянутого, Kestrel не сервер для производства и, как ты отмечаешь в формулировке вопроса, рекомендуемое состоит в том, чтобы использовать что-то как Апачи или nginx. Ты говоришь, что в момент ты обладаешь Апачи, он думал бы, что возможно использовать это для такого конца, но я это не увидел, я в настоящее время использую nginx (без Docker, еще я не нуждался в этом) для этого.