Что должно быть в .htaccess для приложения Angular Universal на сервере веб-хостинга Apache? - PullRequest
0 голосов
/ 23 октября 2019

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

У меня есть универсальное веб-приложение Angular, котороеЯ хочу развернуть на веб-сервере Apache. Я установил pm2, чтобы запустить приложение и сохранить его в живых. Он прослушивает порт 4000. Он не показывает ошибок в журналах, но я получаю 403. Когда я захожу на сайт.

Я думаю, что-то в файле .htaccess неверно или что-то нужно настроитьв файле httpd.conf. Я не совсем понимаю, что именно должно быть в этих файлах, потому что в нескольких ссылках / статьях, которые я прочитал, показаны разные конфигурации. Некоторые говорят, что вам нужен только файл .htaccess. Другие говорят, что вам также нужно настроить виртуальный хост в файле httpd.conf (до которого я не могу добраться, потому что у меня нет привилегий root на сервере).

Так выглядит структура папок. как:

domains
    - appname.com
        - public_html
            - .htaccess
            - browser
                - index.html
                - other files...
            - server
            - server.js
            - package.json

И это мой текущий файл .htaccess, который должен работать для https и перенаправляет в browser / index.html:

RewriteEngine On  

# If an existing asset or directory is requested go to it as it is
RewriteCond %{DOCUMENT_ROOT}%{REQUEST_URI} -f [OR]
RewriteCond %{DOCUMENT_ROOT}%{REQUEST_URI} -d
RewriteRule ^ - [L]

RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}/browser/index.html

Я также пытался этоконфигурация , которая помещает виртуальный хост в файл .htaccess, но это не работает.

Подводя итог моему вопросу: Что именно должно быть в файле .htaccess дляУгловое приложение для работы? Тэг виртуального хоста также должен присутствовать в .htaccess или он работает только из файла httpd.conf?

Обновление

Я связался с моим веб-хостом,Они сказали, что невозможно добавить виртуальный хост в файл .htaccess. Поэтому все, что мне нужно, это перенаправление rewriteRule с учетом https.

1 Ответ

0 голосов
/ 24 октября 2019

Вместе с моим веб-хостом я заставил его работать. Так что они поместили в файл httpd.conf настройки прокси для обоих портов (80 для http и 443 для https). Мое приложение работает на порту 4000, поэтому ему пришлось добавить настройки прокси для этого порта. Файл httpd.conf теперь, вероятно, выглядит примерно так:

<VirtualHost *:80>
 ServerName domainname.com
 ServerAlias www.domainname.com
 <Proxy *>
  Order allow,deny
  Allow from all
 </Proxy>
 ProxyPreserveHost On
 ProxyRequests Off
 ProxyPass / http://localhost:4000/
 ProxyPassReverse / http://localhost:4000/
</VirtualHost>

<VirtualHost *:443>
 ServerName domainname.com
 ServerAlias www.domainname.com
 <Proxy *>
  Order allow,deny
  Allow from all
 </Proxy>
 ProxyPreserveHost On
 ProxyRequests Off
 ProxyPass / https://localhost:4000/
 ProxyPassReverse / https://localhost:4000/
</VirtualHost>

Таким образом, вы должны добавить свое доменное имя в переменные serverName и serverAlias ​​и установить для прокси localhost: 4000 или любой другой вариант, на котором работает angular.

И я переместил файл .htaccess в папку браузера, где находится мой index.html, и изменил его на следующее:

<IfModule mod_rewrite.c>
    RewriteEngine On

    RewriteCond %{DOCUMENT_ROOT}%{REQUEST_URI} -f [OR]
    RewriteCond %{DOCUMENT_ROOT}%{REQUEST_URI} -d

    RewriteRule ^.*$ - [NC,L]
    RewriteRule ^(.*) /index.html [NC,L]
</IfModule>
...