Сравнение можно посмотреть тут
- nginx; tengine (alibaba nginx)
- apache
- iis (deprecated)
- apache tomcat
Apache обычно используется для отдачи статики, nginx для динамики. Данный блог на apache, проблем из-за этого не было.
basic auth
Самая простая/базовая (очевидно) аутентификация клиента сервером. На запрос аутентификации креды отсылаются закодированными (не зашифрованными/захешированными) base64. При использовании HTTPS имеет смысл (т.к. эти данные шифруются), иначе использовать опасно. При использовании закодированные данные передаются в каждом запросе т.е. после автентификации браузер кеширует их и добавляет в последующем к каждому запросу.
The BA mechanism does not provide confidentiality protection for the transmitted credentials. They are merely encoded with Base64 in transit and not encrypted or hashed in any way. Therefore, basic authentication is typically used in conjunction with HTTPS to provide confidentiality. Because the BA field has to be sent in the header of each HTTP request, the web browser needs to cache credentials for a reasonable period of time to avoid constantly prompting the user for their username and password. Caching policy differs between browsers.
Apache
Конфигурация apache для поддержки более 1000 одновременных сессий. Протестировал – работает корректно (создается много параллельных процессов apache).
- https://httpd.apache.org/docs/2.4/mod/prefork.html
- https://httpd.apache.org/docs/2.4/mod/mpm_common.html#maxconnectionsperchild
<IfModule prefork.c> ServerLimit 1000 # Declares the maximum number of running Apache processes StartServers 20 # The number of processes to start initially when starting the Apache daemon MinSpareServers 20 # Minimum number of idle child server processes MaxSpareServers 50 # Maximum number of idle child server processes MaxRequestWorkers 5000 # The maximum number of simultaneous client connections (maximum amount of requests that can be served simultaneously) MaxConnectionsPerChild 10000 # Limit on the number of connections that an individual child server will handle during its life </IfModule>
Если есть подписка на redhat – можно конфиг посмотреть у них жадных.
Redhat lol https://access.redhat.com/solutions/1279903 SUBSCRIBER EXCLUSIVE CONTENT
Nginx
- Nginx поддерживает QUIC в (пока экспериментальных версиях)
- QUIC так же поддерживает tengine (alibaba nginx)
- Nginx можно собрать с флагом debug для глубокой отладки, часть доп. дебага (напр. для QUIC) включается за счет раскоментирования опций define в /event/quic/ngx_event_quic_connection.h файле
Build nginx with debug support [9] and check the debug log. It should contain all details about connection and why it failed. All related messages contain "quic " prefix and can be easily filtered out.
Балансировка и отказоустойчивость WEB приложения легко делается через nginx. Хуже если балансер через DNS, там время кеша 2 минуты.
Бывает даже такой сценарий, что nginx находится на одном логическом сервере (в той же самой системе) с apache и выполняет функции redirect на apache.
location / { proxy_pass http://127.0.0.1:8080/; proxy_redirect off; log_not_found off; server_name_in_redirect off; proxy_set_header X-Real-IP $remote_addr; proxy_set_header Host $http_host; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; add_header X-Content-Type-Options nosniff; add_header Strict-Transport-Security 'max-age=31536000; preload'; add_header X-XSS-Protection "1; mode=block"; add_header X-Frame-Options SAMEORIGIN; client_max_body_size 6m; }
Конфиг, как в случае apache, редактируется в тексте. После модификации нужно перезагружать сервер.
vi /etc/nginx/conf.d/00_site_some_site.ru.conf service nginx restart
Задание адреса на прослушивание в конфиге.
server { listen 172.17.1.246:80;
Редирект.
IT monsters
Request URL:https://queuev4.vk.com/im467 Cache-Control:no-store Connection:keep-alive Content-Length:126 Content-Type:text/javascript; charset=UTF-8 Date:Wed, 31 Aug 2016 19:13:50 GMT Pragma:no-cache Server:Apache
Request URL:https://vk.com/al_im.php cache-control:no-store content-encoding:gzip content-length:1838 content-type:text/plain; charset=windows-1251 date:Wed, 31 Aug 2016 19:13:24 GMT pragma:no-cache server:nginx