LINUX.ORG.RU

27
Всего сообщений: 700

Администрирование Web-сервера Apache и руководство по электронной коммерции

Нашел по настоящему изумительную книгу по Apache. Читаю-делаю и дело сдвигается с мертвой точки. Одна проблема книга выпущена в 2001 году. На сколько сильно изменились принципы конфигурации Apache с тех пор? Стоит ли двигаться дальше по этой книге или стоит найти что-то посвежее?

http://www.ozon.ru/context/detail/id/150542/

 

technobot ()

Скорость загрузки файлов через Apache

Всем привет, подскажите пожалуйста. Есть JAVA приложение, куда запросы идут через Apache как прокси. В это приложение файл размером 6Мб заливается с компа 2 минуты, но если работать через Nginx, то все происходит быстро - за секунды.
Я так понимаю какая-то настройка за это отвечает?Параметр ProxyReceiveBufferSize не помогает. Спасибо!

 ,

Matisse ()

PHP со звуком можно разрешить давно интересующий вопрос?

Здравия всем! Полгода, если не больше неспешно изучал, как PHP можно приучить делать функцию одну со звуком. Суть: Крутится у меня на одноплатнике ораньж пай пк + апач2 с PHP7.0 Есть на нём всякие служебные сайтики. Меня интересует можно ли заставить его с браузера клиента брать звук, онлайн ли, или, например, писать во временный файл, чтоб проиграть непосредственно на одноплатнике сразу. И удалить, если это временный файл. Файлики не длинные, минуты 3, не больше. А то и минуты бы хватило. Как сию задачу можно разрешить? И зеркальный вопрос тогда уж. На сайте кнопка, чтоб слушать тот самый микрофон на одноплатнике. Но там лучше онлайн. И да, без всякого кодирования аудио. Что скажут уважаемые ГУРУ?

 , ,

burato ()

VPS Apache редиректит phpmyadmin. Помогите разобраться

камрады, помогите понять что происходит? Есть сервер VPS, на нем несколько сайтов. раньше заходил по адресу 22.33.44.55/phpmyadmin и видел все БД, а сейчас перенаправляет меня на mysite.com/phpmyadmin захожу туда под рутом, не вижу не одной БД, нажимаю на любую кнопку и выбрасывает из phpmyadmin. где я накосячил? уже три часа не могу ничего понять. все сайты работают, проблем с БД нет вообще. как убрать переадресацию на сайт, чтобы было как раньше 22.33.44.55/phpmyadmin?

 , ,

mr_Elias ()

mod_rewrite. .htaccess: что я еще забыл настроить?

Есть Apache 2.4.2 на Debian Linux 9.Апач ставил из стандартного репозитария, mod_rewrite тоже.

Корень сайта находится по пути /var/www/mysite.
На этот каталог настроен виртуальный хост local-mysite.ru.

Для начала положил в корень index.php с вызовом phpinfo(). Проверил вывод: в разделе Loaded Modules вижу mod_rewrite. Это хорошо.

Далее развернул тестовый сайт, его стартовый скрипт открывается по такому URL:
http://local-mysite.ru/appadv/frontend/web
и по такому тоже, само собой, открывается:
http://local-mysite.ru/appadv/frontend/web/index.php

Теперь мне нужно, чтобы когда в браузере открывается http://local-mysite.ru, следовал переход на вышеуказанный URL.
Для этого я написал .htaccess с таким содержимым:

Options +FollowSymLinks
IndexIgnore */*
RewriteEngine on

# Если запрос не начинается с web, добавляем его
RewriteCond %{REQUEST_URI} !^/(appadv/frontend/web)
RewriteRule (.*) /appadv/frontend/web/$1

# Если файл или каталог не существует, идём к /web/index.php
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /appadv/frontend/web/index.php

Поверил его в онлайн-тестировщике http://htaccess.madewithlove.be. Там преобразование идет правильное.

Но на моем хосте преобразования URI не происходит!

Для отладки отредактировал опцию в файле /etc/apache2/apache2.conf, чтобы видеть сообщения о редиректах:

LogLevel warn rewrite:trace4
Перезагрузил Apache. Обновил страницу с URL http://local-mysite.ru. Насколько я понимаю, в файле /var/log/apache2/error.log должны появиться строки, помеченные [rewrite...] или как-то так. Но ничего такого нет.

Я уже не знаю куда копать.

UPD1: Если это важно: по URL http://local-mysite.ru сейчас Апач отдает список файлов. А должен быть редирект.

UPD2: Модуль существует, и загружен:

# apachectl -M | grep rew
 rewrite_module (shared)
Боженьки, что ему еще надо?

 , ,

Xintrea ()

Apache. Запретить вход на сайт по IP

Зашёл на свою vds по ip (не по доменному имени), а у меня вместо страницы-заглушки загрузился один из сайтов. Непорядок! Использую apache, сайты настроены как виртуальные хосты. Что я не так в нём настроил?

 

sunny1983 ()

Не могу войти в localhost

Чтобы войти в localhost, ввожу в адресную строку браузера http://localhost либо 127.0.0.1 мне выдает

Not found

The requested URL / was not found on this server

Apache/2.4.29(Debian) Server at localhost Port 80

Команда

service apache2 restart
Проходит

 ,

Ivan1990 ()

sudo: htpasswd: command not found

Ничего не понимаю, почему нет утилиты htpasswd? Апач установлен, apache2-utils установлен

 

gobot ()

Дублирующий Apache прокси

Всем привет, поделитесь опытом кто с этим сталкивался. Имеется виртуальный сервер с Apache прокси, который имеет кучу виртуалхостов с поддоменами, ведущих на другие сервера. Если он падает, то все приложения недоступны соответственно.
На этот Apache у доменного регистратора есть запись типа *.мой_домен.ru, которая ведет на него. В случае падения самого сервера, можно ли как-то его продублировать на случай падения основного. Как я понимаю, менять ДНС запись не вариант, ибо долго. Нужно ждать обновления ДНС. Как можно подстраховаться?
Спасибо!

 

Matisse ()

не перезагружается апач

systemctl status apache2.service
? apache2.service - LSB: Apache2 web server
   Loaded: loaded (/etc/init.d/apache2)
  Drop-In: /lib/systemd/system/apache2.service.d
           L-forking.conf
   Active: failed (Result: exit-code) since Sun 2017-12-03 16:41:39 EST; 10s ago
  Process: 29123 ExecStop=/etc/init.d/apache2 stop (code=exited, status=0/SUCCESS)
  Process: 29106 ExecReload=/etc/init.d/apache2 reload (code=exited, status=1/FAILURE)
  Process: 29149 ExecStart=/etc/init.d/apache2 start (code=exited, status=1/FAILURE)

 

gelius ()

Как правильно установить значения для Apache Benchmark тестирования?

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

ab -k -n xxx -c yyy http://aserver.ashep:80/test.html

где xxx - число запросов, а yyy - число одновременных подключений Например я хочу сымитировать одновременную загрузку индексной страницы со 100 компьютеров (пользователей). Всего SQL запросов на странице - 106 Т.е. я должен написать:

ab -k -n 10600 -c 100 http://aserver.ashep:80/test.html

Так получается? Или я чего-то не понимаю?

 ,

maksplotnikoff ()

Битрикс, mod_rewrite и .htaccess

Приветствую!

В битрикс в .htaccess по дефолту:

<IfModule mod_rewrite.c>
  Options +FollowSymLinks
  RewriteEngine On
  RewriteCond %{REQUEST_FILENAME} !-f
  RewriteCond %{REQUEST_FILENAME} !-l
  RewriteCond %{REQUEST_FILENAME} !-d
  RewriteCond %{REQUEST_FILENAME} !/bitrix/urlrewrite.php$
  RewriteRule ^(.*)$ /bitrix/urlrewrite.php [L]
  RewriteRule .* - [E=REMOTE_USER:%{HTTP:Authorization}]
</IfModule>

нужно примешать туда два правила:

### 301 редирект с www на без www
 RewriteCond %{HTTP_HOST} ^www\.(.*)$
 RewriteRule ^(.*)$ http://%1/$1 [L,R=301]

### 301 редирект с /index.php на /
 RewriteCond %{REQUEST_URI} ^(.*)/$
 RewriteRule .* - [L]

 RewriteCond %{ENV:REDIRECT_STATUS} 200
 RewriteRule .* - [L]

 RewriteCond %{REQUEST_METHOD} =GET
 RewriteCond %{REQUEST_URI} ^(.*)/index.php$
 RewriteRule ^(.*)$ %1/ [R=301,L]
Будет ли верным просто такой вариант:
<IfModule mod_rewrite.c>
  Options +FollowSymLinks
  RewriteEngine On  
  RewriteCond %{REQUEST_FILENAME} !-f
  RewriteCond %{REQUEST_FILENAME} !-l
  RewriteCond %{REQUEST_FILENAME} !-d
  RewriteCond %{REQUEST_FILENAME} !/bitrix/urlrewrite.php$
  RewriteRule ^(.*)$ /bitrix/urlrewrite.php [L]
  RewriteRule .* - [E=REMOTE_USER:%{HTTP:Authorization}]
  
### 301 редирект с www на без www
  RewriteCond %{HTTP_HOST} ^www\.(.*)$
  RewriteRule ^(.*)$ http://%1/$1 [L,R=301]

### 301 редирект с /index.php на /
  RewriteCond %{REQUEST_URI} ^(.*)/$
  RewriteRule .* - [L]

  RewriteCond %{ENV:REDIRECT_STATUS} 200
  RewriteRule .* - [L]

  RewriteCond %{REQUEST_METHOD} =GET
  RewriteCond %{REQUEST_URI} ^(.*)/index.php$
  RewriteRule ^(.*)$ %1/ [R=301,L]  
</IfModule>
???

 ,

stranger-ru ()

помогите с настройкой apache2

пытаюсь установить openproject и glpi на apache. по отдльности всё работает но вместе не хочет.

конфиг openproject,создался автоматом


Include /etc/openproject/addons/apache2/includes/server/*.conf

<VirtualHost *:80>
  ServerName EsetGlpi
  DocumentRoot /opt/openproject/public

  ProxyRequests off

  Include /etc/openproject/addons/apache2/includes/vhost/*.conf

  # Can't use Location block since it would overshadow all the other proxypass directives on CentOS
  ProxyPass /openproject/ http://127.0.0.1:6000/openproject/ retry=0
  ProxyPassReverse /openproject/ http://127.0.0.1:6000/openproject/
</VirtualHost>



конфиг glpi,создавал сам


<VirtualHost *:80>
	# The ServerName directive sets the request scheme, hostname and port that
	# the server uses to identify itself. This is used when creating
	# redirection URLs. In the context of virtual hosts, the ServerName
	# specifies what hostname must appear in the request's Host: header to
	# match this virtual host. For the default virtual host (this file) this
	# value is not decisive as it is used as a last resort host regardless.
	# However, you must set it for any further virtual host explicitly.
	#ServerName www.example.com

	ServerName EsetGlpi
	ServerAdmin s.admin@blabla.ua
	DocumentRoot /var/www/glpi/public_html

	# Available loglevels: trace8, ..., trace1, debug, info, notice, warn,
	# error, crit, alert, emerg.
	# It is also possible to configure the loglevel for particular
	# modules, e.g.
	#LogLevel info ssl:warn

	ErrorLog ${APACHE_LOG_DIR}/error.log
	CustomLog ${APACHE_LOG_DIR}/access.log combined

	# For most configuration files from conf-available/, which are
	# enabled or disabled at a global level, it is possible to
	# include a line for only one particular virtual host. For example the
	# following line enables the CGI configuration for this host only
	# after it has been globally disabled with "a2disconf".
	#Include conf-available/serve-cgi-bin.conf
</VirtualHost>


доступ нужен только по локалке к примеру

http://192.168.100.252/openproject/ http://192.168.100.252/glpi/

 ,

Palamar ()

Битрикс mod_rewrite и .htaccess

Приветствую!

В битрикс в .htaccess по дефолту:

<IfModule mod_rewrite.c>
  Options +FollowSymLinks
  RewriteEngine On
  RewriteCond %{REQUEST_FILENAME} !-f
  RewriteCond %{REQUEST_FILENAME} !-l
  RewriteCond %{REQUEST_FILENAME} !-d
  RewriteCond %{REQUEST_FILENAME} !/bitrix/urlrewrite.php$
  RewriteRule ^(.*)$ /bitrix/urlrewrite.php [L]
  RewriteRule .* - [E=REMOTE_USER:%{HTTP:Authorization}]
</IfModule>

нужно примешать туда два правила:

### 301 редирект с www на без www
 RewriteCond %{HTTP_HOST} ^www\.(.*)$
 RewriteRule ^(.*)$ http://%1/$1 [L,R=301]

### 301 редирект с /index.php на /
 RewriteCond %{REQUEST_URI} ^(.*)/$
 RewriteRule .* - [L]

 RewriteCond %{ENV:REDIRECT_STATUS} 200
 RewriteRule .* - [L]

 RewriteCond %{REQUEST_METHOD} =GET
 RewriteCond %{REQUEST_URI} ^(.*)/index.php$
 RewriteRule ^(.*)$ %1/ [R=301,L]

поможите плиз, знатоки apache.

 ,

stranger-ru ()

Apache + RewriteMap

Задача: Пропускать на сайт пользователей, если они пришли с определенных сайтов!

Затестил вариант:

RewriteCond %{HTTP_REFERER} "!google" [NC]
Если пришли не с гугла - выдаем 403. Все работает! Решил воспользоваться заманчивой директивой RewriteMap

Создал файл, указал там список сайтов в виде:

google.com -
example.com - 

Прописал в конфиге:

<IfModule mod_rewrite.c>
	RewriteEngine On
        RewriteMap allowreferer "txt:/home/allow_referer.txt"
	RewriteCond "%{HTTP_REFERER}" !=""
        RewriteCond "${allowreferer:%{HTTP_REFERER}|NOT-FOUND}" "=NOT-FOUND"
        RewriteRule ^ - [F,L]
    </IfModule>

И вижу, что нифига не работает! Если прописать в файл allow_referer.txt точные совпадения - то все работает как и ожидалось. А если просто домен - выдает 403! Как быть? Неужели про регулярки забыли в параметре MapName ?

Сча сделал так:

RewriteCond %{HTTP_REFERER} "(http|https):\/\/([a-z0-9\-\.]+)\.([a-z]{2,4}+)(|\/)(.*)"
RewriteCond "${allowreferer:%2.%3|NOT-FOUND}" "=NOT-FOUND"

Вроде работает, но не очень нравится такой вариант! Вернее сказать совсем не нравится!

На борту:

Server version: Apache/2.4.27 (Unix)
Server built:   Jul 25 2017 12:29:36

Прошу помощи!

P.S. Про nginx знаю. Пожалуйста, не ссылайтесь с репликой перехода туда!

 ,

xisip ()

Apache лимит на запрос

Как ограничить время запроса? Т.е. если клиенту ничего не отдается в течении 3 сек(например в php скрипте sleep(99999)), то запрос отрубается.
В php max_execution_time не спасает. В апач TimeOut тоже не влияет.

 , ,

gobot ()

Как настроить права доступа к просмотру репозиториев на cgit?

Всем привет!

Хочется, чтобы cgit умел в аутентификацию по ключу, как ssh. То есть, юзер вводит свое имя, предоставляет свой приватный ключ (который,естественно, не передается никуда), и может просмотривать репозитории и ветки, на которые есть доступ на чтение.

 ,

aido ()

Защита от регистрации

Есть форум PHPBB. Изучал способы автоматической работе в интернете, главный упор в статьях делался на то что нужно пользоваться прокси, для автоматической регистрации/ Соответственно возникла идея защиты листа регистрации с редиректом на страницу с предупреждением но сколько не бился никак не смог прописать правила. Пример если человек заходит через прокси, на страницу регистрации https://ваш_сайт/ucp.php?mode=register ну и желательно https://ваш_сайт/adm/* его перебрасывает на ttps://ваш_сайт/предупреждение

Вот заготовка но дальше ни как не продвинусь.

<IfModule mod_rewrite.c> RewriteEngine on RewriteCond %{HTTP:VIA} ! [OR] RewriteCond %{HTTP:FORWARDED} ! [OR] RewriteCond %{HTTP:USERAGENT_VIA} ! [OR] RewriteCond %{HTTP:X_FORWARDED_FOR} ! [OR] RewriteCond %{HTTP:PROXY_CONNECTION} ! [OR] RewriteCond %{HTTP:XPROXY_CONNECTION} ! [OR] RewriteCond %{HTTP:HTTP_PC_REMOTE_ADDR} ! [OR] RewriteCond %{HTTP:HTTP_CLIENT_IP} ! RewriteRule ^register/$ — [F] RewriteRule /adm/$ RewriteRule ^(.*)$ https://страница.$ [r=301]

# deny domain access RewriteEngine on RewriteBase / RewriteCond %{HTTP_USER_AGENT} anonymous [NC] RewriteRule ^register.* — [F,L] </IfModule>

 ,

ciiz ()

Убрать слэш в адресной строке после имени домена.

Может быть глупый вопрос, но вот ума не приложу как это сделать. Убрать так называемый trailing slash получается, с этим проблем нет, ссылки выглядят как example.org/foo/bar вместо example.org/foo/bar/ . Теперь к сути проблемы, есть Apache 2.4.3 сервер на локалке, на нем виртуал хосты, которые резолвятся по имени и лежат в /var/www/vhosts. Вот конфиг хоста:

<VirtualHost *:80>

    DocumentRoot "/var/www/vhosts/site.local/site/public"

    ServerName site.local
    ServerAlias www.site.local

    ErrorLog /var/log/site_local_apache_error.log
    CustomLog /var/log/site_local_apache_access.log common

    <Directory "/var/www/vhosts/site.local/site/public">
            Options +FollowSymLinks
            Options -Indexes
            AllowOverride All
            DirectoryIndex index.php
            Order allow,deny
            Allow from all
            # New directive needed in Apache 2.4.3:
            Require all granted
    </Directory>

</VirtualHost>

И htaccess в public:

<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]

    # Handle Front Controller...
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^ index.php [L]

</IfModule>

При доступе к сайту, появляется слэш, так как public это папка. Вот собственно и глупый вопрос, как превратить site.local/ в site.local

 , ,

eyes_only ()

Апач, прокси

Есть сервер апач на нем reverse proxy + SSL.

Подскажите какими средствами можно все запросы от апача пробросить через внешний прокси.

Что то вида:

ProxyPass / proxychains4 https://1.1.1.1/ 
ProxyPassReverse / proxychains4 https://1.1.1.1/
</VirtualHost> 


Може кто знает так запустить апач через proxychains4 ?

 , , ,

dev_as_part_of_live ()