Как проверить, какие модули активны на моем сервере?

8

При попытке решить проблему на моем веб-сайте была дана рекомендация о файле .htaccess, который я получил.

Прежде всего, проверьте на сервере наличие всех различных модулей, включены ли они, и, как только они будут включены, удалите

<IfModule
 ...></IfModule>

блоки. Они создают ненужную нагрузку на ваш сервер.

Я не знаю, где искать, если модули активны - это в CMS? в файле httpd.conf? в файлах на моем сервере? я должен сделать небольшую модификацию в .htaccess в качестве теста? Но более того, может ли рекомендация self быть неуместной? Спасибо.

Вот файл .htaccess, для которого была сделана рекомендация:

Options +FollowSymLinks -MultiViews
RewriteEngine on
AddHandler x-httpd-php .html .htm

<ifModule mod_gzip.c>
  mod_gzip_on Yes
  mod_gzip_dechunk Yes
  mod_gzip_item_include file \.(html?|txt|css|js|php|pl)$
  mod_gzip_item_include handler ^cgi-script$
  mod_gzip_item_include mime ^text/.*
  mod_gzip_item_include mime ^application/x-javascript.*
  mod_gzip_item_exclude mime ^image/.*
  mod_gzip_item_exclude rspheader ^Content-Encoding:.*gzip.*
</ifModule>

<ifModule mod_expires.c>
  ExpiresActive On
  ExpiresDefault "access plus 1 seconds"
  ExpiresByType text/html "access plus 1 seconds"
  ExpiresByType image/gif "access plus 2592000 seconds"
  ExpiresByType image/jpeg "access plus 2592000 seconds"
  ExpiresByType image/png "access plus 2592000 seconds"
  ExpiresByType text/css "access plus 2592000 seconds"
  ExpiresByType text/javascript "access plus 216000 seconds"
  ExpiresByType application/x-javascript "access plus 216000 seconds"
</ifModule>

<ifModule mod_headers.c>
  <filesMatch "\\.(ico|pdf|flv|jpg|jpeg|png|gif|swf)$">
    Header set Cache-Control "max-age=2592000, public"
  </filesMatch>

  <filesMatch "\\.(css)$">
    Header set Cache-Control "max-age=2592000, public"
  </filesMatch>

  <filesMatch "\\.(js)$">
    Header set Cache-Control "max-age=216000, private"
  </filesMatch>

  <filesMatch "\\.(xml|txt)$">
    Header set Cache-Control "max-age=216000, public, must-revalidate"
  </filesMatch>

  <filesMatch "\\.(html|htm|php)$">
    Header set Cache-Control "max-age=1, private, must-revalidate"
  </filesMatch>
</ifModule>

<ifModule mod_headers.c>
  Header unset ETag
</ifModule>

FileETag None

<ifModule mod_headers.c>
  Header unset Last-Modified
</ifModule>

RewriteCond %{HTTP_HOST} !^(www\.)?foo\.com$
RewriteRule .? http://foo.com%{REQUEST_URI} [R=301,L]

#BEGIN WordPress
<IfModule mod_rewrite.c>

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php

</IfModule>
# END WordPress
Keiki
источник
Я думаю, что вам нужно больше информации от человека, который сказал это. Какие модули? Модули Apache? Что они подразумевают под «блоками»?
paulmorriss
Извините, вы правы, я добавил файл .htaccess, на основании которого человек сделал рекомендацию. Я не очень понимаю, что они имеют в виду, и не могу получить от них больше подробностей, поэтому я спрашиваю здесь, полагая, что люди с большим знанием, чем я, могли бы понять это легче. Секунду, я только сейчас вижу, что вопрос был отредактирован перед публикацией - я должен был использовать кодовые теги в теге цитаты. Буду редактировать прямо сейчас!
Кейки
1
Я исправил вопрос, теперь рекомендация содержит всю оригинальную информацию.
Кейки
Способ найти то, что активно, зависит от вашего сервера. Некоторые будут в файле http.conf, но другие могут быть загружены динамически. У вас есть какая-то панель управления, или у вас есть доступ к самому серверу?
paulmorriss
Это веб-сайт Wordpress - так что я думаю, что это сервер Apache. У меня есть FTP-доступ к файлам веб-сайта, доступ к деталям CMS LunarPages и доступ к интерфейсу Wordpress.
Keiki

Ответы:

4

Если PHP запускается как модуль apache, вы можете использовать эту phpinfo()функцию. Найдите раздел Apache (обычно apache2handler) и найдите строку с «Loaded Modules»:

раздел apache2handler в phpinfo ()

Lekensteyn
источник
2
К сожалению, нет на моем общем хостинге.
Джанго Рейнхардт
2
@DjangoReinhardt Возможно, ваш общий хостинг использует не Apache + mod_php, а вместо этого nginx / Apache / ... с php-fpm или даже с php-cgi. Найдите строку API сервера в верхней части страницы (моя говорит FPM / FastCGI для php-fpm).
Лекенштейн
3

Предполагая, что вы имеете в виду модули Apache, вы можете запустить ниже, чтобы увидеть, какие модули вы загрузили:

apachectl -t -D DUMP_MODULES
тесто
источник
1
-bash: apachectl: command not foundрыдание :(
Джанго Рейнхардт
Вы можете попробовать:find / apachectl | grep apachectl
тесто
1
ModSecurity: Failed to open debug log file: /var/log/apache2/modsec_debug.logтогда cat: /var/log/apache2/modsec_debug.log: Permission denied
рыдание
2

Если эти модули не загружены, значит, на вашем сайте ничего не сломается, просто не будет лучших настроек управления кешем. Поэтому не используйте if-модули, так как вы даже не можете их загрузить, если они не загружены. Сайт Apache говорит

При нормальной работе директивы не обязательно размещать в разделах.

http://httpd.apache.org/docs/2.0/mod/core.html#ifmodule

paulmorriss
источник
1

Прежде всего, проверьте на сервере наличие всех различных модулей, если они включены, и, как только они будут включены, удалите <IfModule ...> </ IfModule>

О вашем запросе: вам нужно проверить, включены ли эти модули на сервере, и если они есть, вы можете удалить условие if из htaccess:

Например, если модуль mod_expires.c включен, вы можете удалить, <IfModule mod_expires.c></IfModule>и вы сохраните только эту часть:

ExpiresActive On
ExpiresDefault "access plus 1 seconds"
ExpiresByType text/html "access plus 1 seconds"

так что вы больше не проверяете, включен ли этот модуль, потому что вы уже это сделали.

Даниил
источник
0

1) просто добавить в .htaccess

<ifModule mod_expires.c>
deny from YOUR.IP 


</ifModule>

2) обновите свой сайт
3) если вы вне игры сейчас, mod_expiresактивен
4) удалить deny from YOUR.IPиз ifModule mod_expires.c

fday
источник