Alexey Vissarionov написал(а) к Vadim Makarov в Sep 18 22:44:44 по местному времени:
Доброго времени суток, Vadim!
30 Sep 2018 20:34:38, ты -> All:
VM> Решил я таки веб-сервер, а во вторую очередь и джабер поставить дома.
VM> Разжился провайдером с внешним айпишником и ноутбуком с сентосью.
VM> Вот смотрю на это всё, как баран на новые ворота.
VM> Апач говорят - древнее говно древнего мамонта.
Вот только реальных альтернатив егойному suexec как-то не наблюдается.
VM> А что вместо него?
Для скриптов? Да в общем-то ничего...
VM> По-проще что-то есть?
Есть nginx, но с ним есть риск свалиться в другую крайность (во всяком случае, абсолютное большинство читателей мудацких мануалов делают именно это).
В целом картина такая: есть Apache foundation, которые настолько гордятся своим уеб-сервером httpd, что даже высовывают его непосредственно (без кеширующего прокси aka уеб-фронтенда) во внешний мир, где он аж трещит от нагрузки, и есть Nginx software, которые сделали отличный уеб-фронтенд (тот самый кеширующий прокси), но упорно продвигают его в качестве уеб-сервера.
И у тех, и у других есть свои апологеты.
И те, и другие апологеты пишут мануалы "для чайников".
И те, и другие апологеты в массе своей никогда не имели дела с действительно критичными высоконагруженными сервисами.
А те, кто поддерживает критичные высоконагруженные сервисы, мануалы не пишут - им формально некогда, а реально попросу в падлу.
VM> От веба хочу там буквально несколько страничек, да их можно и вручную
VM> нарисовать.
Статика. Хорошо.
VM> С чего начать то?
Начни с настройки nginx. Когда понадобятся скрипты, научишь его обращаться к апачевскому httpd - они, вопреки визгам религиозных фанатиков, лучше всего работают именно в связке.
Вот тебе простой конфиг, с которого можно начать. Комментарии по-русски были добавлены сейчас, а по-английски оставлены как в реальном конфиге.
# /etc/nginx/nginx.conf
# непривилегированный пользователь, под которым работает сам демон
user nginx;
worker_processes 2;
error_log /var/log/nginx/error.log;
events
{
worker_connections 1024;
}
http
{
# у меня /tmp живет в tmpfs и пропадает после перезагрузки,
# поэтому я добавил в /etc/sysconfig/nginx пару строчек:
# mkdir -p /tmp/nginx/{cache,proxy}
# chown -R nginx: /tmp/nginx
proxy
temppath /tmp/nginx/proxy;
include /etc/nginx/mime.types;
default_type text/plain;
# мой любимый формат лога
log
format myfavorite
'[$time
local] $remote_addr - $remoteuser "$request" '
'(
http://$host$request_uri) '
'$status $body
bytes_sent ref: "$httpreferer" '
'uag: "$http
user_agent" for: "$http_x_forwardedfor" '
'"acclang: $http
acceptlanguage"';
access
log /var/log/nginx/access.log myfavorite;
sendfile on;
server_tokens off;
keepalive_timeout 15;
gzip on;
proxy
httpversion 1.1;
proxy
cachepath
/tmp/nginx/cache
levels=1:2
keys
zone=localcache:1024m;
proxy
cache_key "$host$requesturi";
proxy
cachemethods GET;
# 2 minutes for НTTP code 200 (OK)
proxy
cachevalid 200 2m;
# 5 minutes for НTTP codes 301 and 302 (Moved)
proxy
cachevalid 301 302 5m;
# 30 minutes for НTTP code 304 (Not modified)
proxy
cachevalid 304 30m;
proxy
cache_usestale
error timeout updating
http
500 http_502 http_503 http504;
# Use this cache for everything
proxy
cache localcache;
# это контейнеры с Apache НTTPD, между которыми происходит
# простейшая балансировка нагрузки
upstream figvam
{
ip_hash;
server 10.0.0.100:8000;
server 10.0.0.101:8000;
server 10.0.0.102:8000;
server 10.0.0.103:8000;
# ...
}
# статическое содержимое (картинки итд) nginx раздает самостоятельно...
server
{
listen 0.0.0.0:80 default_server;
listen [::]:80 ipv6only=on;
listen 0.0.0.0:443 ssl;
listen [::]:443 ipv6only=on ssl;
ssl_certificate /etc/nginx/cert/local.crt;
ssl
certificatekey /etc/nginx/cert/local.key;
server_name "static.example.net";
root "/home/example/www";
location /
{
autoindex off;
}
}
# ... а за динамическим контентом (т.е. за результатами работы скриптов)
# ходит к индейцам
server
{
listen 0.0.0.0:80;
listen [::]:80 ipv6only=on;
listen 0.0.0.0:443 ssl;
listen [::]:443 ipv6only=on ssl;
ssl_certificate /etc/nginx/cert/local.crt;
ssl
certificatekey /etc/nginx/cert/local.key;
server_name "example.net";
location /
{
client
max_bodysize 16M;
proxy
setheader Нost $host;
proxy
set_header X-Real-IP $remoteaddr;
proxy_pass
http://figvam;
}
}
}
--
Alexey V. Vissarionov aka Gremlin from Kremlin
gremlin ПРИ gremlin ТЧК ru; +vii-cmiii-ccxxix-lxxix-xlii
... Пропала собака? Спросите у Пака!
--- /bin/vi