После обновления 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 не работает как рекламируется.

Ура, приятели.

Другие вопросы по тегам