Мне нужно выполнить определенную настройку моего apache, чтобы использовать определенный пакет npm https://github.com/tlaverdure/laravel-echo-server поверх cpanel. Поэтому мне было интересно, можно ли безопасно добавить следующий код в существующий файл .htacess
.
RewriteEngine On
RewriteCond %{REQUEST_URI} ^/socket.io [NC]
RewriteCond %{QUERY_STRING} transport=websocket [NC]
RewriteRule /(.*) ws://localhost:6001/$1 [P,L]
ProxyPass /socket.io http://localhost:6001/socket.io
ProxyPassReverse /socket.io http://localhost:6001/socket.io
Вот содержимое файла .htaccess
:
RewriteEngine On
RewriteCond %{HTTPS} !=on
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301,NE]
<IfModule mod_rewrite.c>
<IfModule mod_negotiation.c>
Options -MultiViews -Indexes
</IfModule>
RewriteEngine On
# Handle Authorization Header
RewriteCond %{HTTP:Authorization} .
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
# Redirect Trailing Slashes If Not A Folder...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} (.+)/$
RewriteRule ^ %1 [L,R=301]
# Send Requests To Front Controller...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [L]
</IfModule>
# php -- BEGIN cPanel-generated handler, do not edit
# Set the “ea-php74” package as the default “PHP” programming language.
<IfModule mime_module>
AddHandler application/x-httpd-ea-php74 .php .php7 .phtml
</IfModule>
# php -- END cPanel-generated handler, do not edit
Обновлено:
У меня нет root-доступа, чтобы разместить его в моем /etc/httpd/conf/httpd.conf
в качестве виртуального хоста.
Спасибо за ответ. Не могли бы вы объяснить мне недостатки @arkascha
Распределенные файлы конфигурации предлагаются только в качестве последнего средства для тех, у кого нет доступа к фактической конфигурации хоста. Они добавляют сложности, общеизвестно подвержены ошибкам, трудны для отладки и, самое главное, действительно замедляют работу http-сервера...
Хорошо, спасибо @arkascha. Я работаю на виртуальном хостинге и после консультации с моим хостом. Они не могут помочь мне сделать такие изменения. В таком случае есть ли еще способ сделать это безопасно?
Я в замешательстве ... Теперь у вас есть доступ к фактической конфигурации хоста, как заявлено в вопросе, или вы не можете это контролировать?
Я думал, что сделал, но нет. У меня есть доступ по SSH, но не root-доступ.
@arkascha Я отредактировал вопрос. А так же решил мою проблему. Спасибо.
Я смог решить свою проблему, поместив это в свой .htaccess
RewriteEngine On
RewriteCond %{HTTP_HOST} ^(www\.)?sub.domain\.com
RewriteRule ^socket.io/? http://localhost:6001/socket.io [R=301,L]
Очень хорошо, что вы поделились с нами решением вашей проблемы, продолжайте в том же духе (учитесь и делитесь). Просто дополнительное примечание, которое вы можете изменить (необязательно и может помочь вам в будущем) (www\.)?sub.domain\.com
на ^(?:www\.)sub.domain\.com
, где ?:
относится к незахватываемой группе.
Если у вас есть доступ к фактической конфигурации хоста, то зачем вам использовать распределенный файл конфигурации (.htaccess)? У них явные недостатки...