После обновления php.ini через Plesk мой htaccess файл перестал работать
Мне нужна помощь, помня, что я сделал, чтобы позволить Plesk использовать .htaccess
, Недавно я изменил размер файла загрузки PHP на домене, и вдруг мой .htaccess
директивы перестали работать. Это означает, что я "исправил" что-то, вероятно, в httpd.conf
и тупо не распространял исправление на файл, который не был автоматически перезаписан Plesk. (ага, идиот....)
мой .htaccess
Файл имеет ряд записей, как показано ниже. Это все, что у него есть. Цель состоит в том, чтобы позволить мне иметь example.com/command
выполнить файл command
как будто это было command.php
, Я делал это десятилетиями. Если вы простите меня, если ваш ответ что-то вроде "не делай этого...", пожалуйста, воздержитесь. Благодарю.
.htaccess
<Files support>
SetHandler proxy:unix:///var/www/vhosts/system/example.com/php-fpm.sock|fcgi://127.0.0.1:9000
</Files>
Я попытался разместить эти записи в соответствии с инструкциями Plesk в поле дополнительных директив Apache (создавая vhosts.conf
файл я перенастроил, чтобы он был правильно включен) безрезультатно.
http.conf
#ATTENTION!
#
#DO NOT MODIFY THIS FILE BECAUSE IT WAS GENERATED AUTOMATICALLY,
#SO ALL YOUR CHANGES WILL BE LOST THE NEXT TIME THE FILE IS GENERATED.
#IF YOU REQUIRE TO APPLY CUSTOM MODIFICATIONS, PERFORM THEM IN THE FOLLOWING FILES:
#/var/www/vhosts/system/example.com/conf/vhost.conf
#/var/www/vhosts/system/example.com/conf/vhost_ssl.conf
<IfModule mod_ssl.c>
<VirtualHost 216.55.178.166:7081 >
ServerName "example.com:443"
ServerAlias "www.example.com"
ServerAlias "ipv4.example.com"
ServerAdmin "me@me.org"
UseCanonicalName Off
DocumentRoot "/var/www/vhosts/example.com/web"
CustomLog /var/www/vhosts/system/example.com/logs/access_ssl_log plesklog
ErrorLog "/var/www/vhosts/system/example.com/logs/error_log"
<IfModule mod_suexec.c>
SuexecUserGroup "me_phelps" "psacln"
</IfModule>
<IfModule mod_userdir.c>
UserDir "/var/www/vhosts/example.com/web_users/*"
</IfModule>
<IfModule mod_sysenv.c>
SetSysEnv PP_VHOST_ID "199da76e-b413-4968-8251-301b780838f1"
</IfModule>
ScriptAlias "/cgi-bin/" "/var/www/vhosts/example.com/web/cgi-bin/"
Alias "/plesk-stat" "/var/www/vhosts/system/example.com/statistics"
<Location /plesk-stat/>
Options +Indexes
</Location>
<Location /plesk-stat/logs/>
Require valid-user
</Location>
Alias /webstat /var/www/vhosts/system/example.com/statistics/webstat
Alias /webstat-ssl /var/www/vhosts/system/example.com/statistics/webstat-ssl
Alias /ftpstat /var/www/vhosts/system/example.com/statistics/ftpstat
Alias /anon_ftpstat /var/www/vhosts/system/example.com/statistics/anon_ftpstat
Alias /awstats-icon /var/www/html/awstats/icon
SSLEngine on
SSLVerifyClient none
SSLCertificateFile /usr/local/psa/var/certificates/certW5TKkGV
<Directory /var/www/vhosts/example.com/web>
<IfModule mod_fcgid.c>
<Files ~ (\.fcgi$)>
SetHandler fcgid-script
Options +ExecCGI
</Files>
</IfModule>
<IfModule mod_proxy_fcgi.c>
<Files ~ (\.php$)>
SetHandler proxy:unix:///var/www/vhosts/system/example.com/php-fpm.sock|fcgi://127.0.0.1:9000
</Files>
</IfModule>
SSLRequireSSL
Options -Includes +ExecCGI
</Directory>
<Directory "/var/www/vhosts/system/example.com/statistics">
AuthType Basic
AuthName "Domain statistics"
AuthUserFile "/var/www/vhosts/system/example.com/pd/d..httpdocs@plesk-stat"
require valid-user
</Directory>
Alias /error_docs /var/www/vhosts/example.com/error_docs
ErrorDocument 400 /error_docs/bad_request.html
ErrorDocument 401 /error_docs/unauthorized.html
ErrorDocument 403 /error_docs/forbidden.html
ErrorDocument 404 /error_docs/not_found.html
ErrorDocument 500 /error_docs/internal_server_error.html
ErrorDocument 405 /error_docs/method_not_allowed.html
ErrorDocument 406 /error_docs/not_acceptable.html
ErrorDocument 407 /error_docs/proxy_authentication_required.html
ErrorDocument 412 /error_docs/precondition_failed.html
ErrorDocument 414 /error_docs/request_uri_too_long.html
ErrorDocument 415 /error_docs/unsupported_media_type.html
ErrorDocument 501 /error_docs/not_implemented.html
ErrorDocument 502 /error_docs/bad_gateway.html
ErrorDocument 503 /error_docs/maintenance.html
DirectoryIndex "index.html" "index.cgi" "index.pl" "index.php" "index.xhtml" "index.htm" "index.shtml"
Include "/var/www/vhosts/system/example.com/conf/vhost_ssl.conf"
<Directory /var/www/vhosts/example.com>
AllowOverride AuthConfig FileInfo Indexes Limit Options=Indexes,SymLinksIfOwnerMatch,MultiViews,FollowSymLinks,ExecCGI,Includes,IncludesNOEXEC
</Directory>
</VirtualHost>
</IfModule>
<VirtualHost 216.55.178.166:7080 >
ServerName "example.com:80"
ServerAlias "www.example.com"
ServerAlias "ipv4.example.com"
ServerAdmin "me@me.org"
UseCanonicalName Off
DocumentRoot "/var/www/vhosts/example.com/web"
CustomLog /var/www/vhosts/system/example.com/logs/access_log plesklog
ErrorLog "/var/www/vhosts/system/example.com/logs/error_log"
<IfModule mod_suexec.c>
SuexecUserGroup "me_phelps" "psacln"
</IfModule>
<IfModule mod_userdir.c>
UserDir "/var/www/vhosts/example.com/web_users/*"
</IfModule>
<IfModule mod_sysenv.c>
SetSysEnv PP_VHOST_ID "199da76e-b413-4968-8251-301b780838f1"
</IfModule>
ScriptAlias "/cgi-bin/" "/var/www/vhosts/example.com/web/cgi-bin/"
Redirect permanent /plesk-stat https://example.com/plesk-stat
Redirect permanent /webstat https://example.com/webstat
Redirect permanent /webstat-ssl https://example.com/webstat-ssl
Redirect permanent /ftpstat https://example.com/ftpstat
Redirect permanent /anon_ftpstat https://example.com/anon_ftpstat
Redirect permanent /awstats-icon https://example.com/awstats-icon
<IfModule mod_ssl.c>
SSLEngine off
</IfModule>
<Directory /var/www/vhosts/example.com/web>
<IfModule mod_fcgid.c>
<Files ~ (\.fcgi$)>
SetHandler fcgid-script
Options +ExecCGI
</Files>
</IfModule>
<IfModule mod_proxy_fcgi.c>
<Files ~ (\.php$)>
SetHandler proxy:unix:///var/www/vhosts/system/example.com/php-fpm.sock|fcgi://127.0.0.1:9000
</Files>
</IfModule>
Options -Includes +ExecCGI
</Directory>
<Directory "/var/www/vhosts/system/example.com/statistics">
AuthType Basic
AuthName "Domain statistics"
AuthUserFile "/var/www/vhosts/system/example.com/pd/d..httpdocs@plesk-stat"
require valid-user
</Directory>
Alias /error_docs /var/www/vhosts/example.com/error_docs
ErrorDocument 400 /error_docs/bad_request.html
ErrorDocument 401 /error_docs/unauthorized.html
ErrorDocument 403 /error_docs/forbidden.html
ErrorDocument 404 /error_docs/not_found.html
ErrorDocument 500 /error_docs/internal_server_error.html
ErrorDocument 405 /error_docs/method_not_allowed.html
ErrorDocument 406 /error_docs/not_acceptable.html
ErrorDocument 407 /error_docs/proxy_authentication_required.html
ErrorDocument 412 /error_docs/precondition_failed.html
ErrorDocument 414 /error_docs/request_uri_too_long.html
ErrorDocument 415 /error_docs/unsupported_media_type.html
ErrorDocument 501 /error_docs/not_implemented.html
ErrorDocument 502 /error_docs/bad_gateway.html
ErrorDocument 503 /error_docs/maintenance.html
DirectoryIndex "index.html" "index.cgi" "index.pl" "index.php" "index.xhtml" "index.htm" "index.shtml"
Include "/var/www/vhosts/system/example.com/conf/vhost.conf"
<Directory /var/www/vhosts/example.com>
AllowOverride AuthConfig FileInfo Indexes Limit Options=Indexes,SymLinksIfOwnerMatch,MultiViews,FollowSymLinks,ExecCGI,Includes,IncludesNOEXEC
</Directory>
</VirtualHost>
Я думал об изменении AllowOverride
в All
, но используя vhost.conf
файл должен был работать даже без него, не так ли? vhost.conf
файл является идеальным решением для меня, как бы получить мою любимую .htacess
возможности обратно (несмотря на снижение производительности). Но пока пытаюсь выполнить example.com/support
дает мне Access Prohibited
ошибка. Когда я смотрю на мои файлы ошибок, я нахожу...
example.com/logs/error_log
[proxy_fcgi:error] [pid 19834] [client 67.161.220.240:48094] AH01071: Got error 'Access to the script '/var/www/vhosts/example.com/web/support' has been denied (see security.limit_extensions)\n'
Обратите внимание, что я попытался установить security.limit_extensions =
пустым, но это тоже не работает. Я понимаю ограничения безопасности, но я работаю на своем собственном сервере, поэтому я готов пойти на риск.
example.com/log/proxy_error_log (nginx)
[error] 27192#0: *115850 connect() failed (111: Connection refused) while connecting to upstream, client: 46.17.42.140, server: exammple.com, request: "POST /support/contact_us HTTP/1.1", upstream: "http://1.1.1.1:7080/support/contact_us", host: "example.com"
И, ради тщательности, файл конфигурации nginx.
nginx.conf
#ATTENTION!
#
#DO NOT MODIFY THIS FILE BECAUSE IT WAS GENERATED AUTOMATICALLY,
#SO ALL YOUR CHANGES WILL BE LOST THE NEXT TIME THE FILE IS GENERATED.
server {
listen 216.55.178.166:443 ssl;
server_name example.com;
server_name www.example.com;
server_name ipv4.example.com;
ssl_certificate /usr/local/psa/var/certificates/certW5TKkGV;
ssl_certificate_key /usr/local/psa/var/certificates/certW5TKkGV;
client_max_body_size 128m;
root "/var/www/vhosts/example.com/web";
access_log "/var/www/vhosts/system/example.com/logs/proxy_access_ssl_log";
error_log "/var/www/vhosts/system/example.com/logs/proxy_error_log";
location / {
proxy_pass https://216.55.178.166:7081;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Accel-Internal /internal-nginx-static-location;
access_log off;
}
location /internal-nginx-static-location/ {
alias /var/www/vhosts/example.com/web/;
internal;
}
location ~ ^/(plesk-stat|awstats-icon|webstat|webstat-ssl|ftpstat|anon_ftpstat) {
proxy_pass https://216.55.178.166:7081;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Accel-Internal /internal-nginx-static-location;
access_log off;
}
add_header X-Powered-By PleskLin;
}
server {
listen 216.55.178.166:80;
server_name example.com;
server_name www.example.com;
server_name ipv4.example.com;
client_max_body_size 128m;
root "/var/www/vhosts/example.com/web";
access_log "/var/www/vhosts/system/example.com/logs/proxy_access_log";
error_log "/var/www/vhosts/system/example.com/logs/proxy_error_log";
location / {
proxy_pass http://216.55.178.166:7080;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Accel-Internal /internal-nginx-static-location;
access_log off;
}
location /internal-nginx-static-location/ {
alias /var/www/vhosts/example.com/web/;
internal;
}
location ~ ^/(plesk-stat|awstats-icon|webstat|webstat-ssl|ftpstat|anon_ftpstat) {
proxy_pass http://216.55.178.166:7080;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Accel-Internal /internal-nginx-static-location;
access_log off;
}
add_header X-Powered-By PleskLin;
}
1 ответ
Удивительно, как некоторые вещи работают, а другие нет в нашем сложном маленьком мире.
Мне действительно нужно добавить следующее:
[php-fpm-pool-settings]
security.limit_extensions =
Проблема заключалась в том, что поле дополнительных директив Plesk в разделе "Настройки PHP" для домена, по-видимому , ничего не делает. Ну, может быть, он что-то делает, но что бы он ни делал, это не сработало.
Я должен был вручную создать /var/www/vhosts/system/example.com/conf/php.ini
файл и добавьте две строки выше к нему. Затем мне пришлось "применить" пустые изменения (не имеет значения, изменилось ли что-либо на самом деле) через страницу "Настройки PHP" Plesk, чтобы все конфигурации были собраны правильно и правильные службы были перезапущены...
и тогда это сработало.
Я потратил два дня на отслеживание этого уродливого bugaboo, потому что поле "дополнительных директив" в Plesk не работает как рекламируется.
Ура, приятели.