Рубрики
apache \ nginx

nginx / debian 10 / простой конфиг / пароль на сайт / htpasswd

Установка и подготовка:

0. Установка 
apt install apache2-utils - устанавливаем пакет  apache2-utils, из него нам нужна программа htpasswd
apt install nginx - устанавливаем nginx

1. Создаем файл и создаем пользователя .htpasswd
touch /etc/nginx/.htpasswd - создаем файл для паролей
htpasswd -c /etc/nginx/.htpasswd User_Name

2. Возможно понадобится симлинк
cd name_dir_www - перешли в каталог где нужно сделать name_link
ln -s /dir/need/link name_link - создали линк с именем (name_link) на каталог (/dir/need/link)

Настройка nginx, пример на дефолтной конфигурации

0. Редактируем файл (/etc/nginx/sites-available/default)
nano /etc/nginx/sites-available/default
--------------------------------------
server {
        listen 80 default_server;

        root /var/www/html;

        index index.html index.htm index.nginx-debian.html;

        auth_basic           "closed site";
        auth_basic_user_file /etc/nginx/htpasswd;

        server_name _;
        location / {
                 autoindex on;
              }
}
--------------------------------------
1. Перезапускаем nginx
 service nginx restart

Описание директив:

0. Описание директивы для авторизации
auth_basic — включение проверки авторизации
auth_basic_user_file — путь к файлу с ключами
Их можно использовать в контекстах: http, server, location, limit_except. 

Это значит, что можно, например, ограничить доступ:
ко всему серверу:
http {
    ...
    auth_basic "Restricted Area";
    auth_basic_user_file /etc/nginx/.htpasswd;
    ...
}


к определенному проекту:
server {
    ...
    auth_basic "Restricted Area";
    auth_basic_user_file /etc/nginx/.htpasswd;
    ...
}

или к конкретному адресу в проекте:
server {
    ...
    location / {
        auth_basic "Restricted Area";
        auth_basic_user_file /etc/nginx/.htpasswd;
        ...
    }
}

1. Директивы: 
autoindex on; - эта директива позволяет ходить по каталогам и ссылкам

Ссылки:

https://nginx.org/ru/ - основная документация

https://nginx.org/ru/docs/http/ngx_http_autoindex_module.html
https://nginx.org/ru/docs/http/ngx_http_auth_basic_module.html

.HTACCESS И .HTPASSWD
Рубрики
certbot

Certbot \ Let’s Encrypt \ уведомления \ почта \ сертификат \ окончание

Решение:

certbot register --update-registration --email ВАШ@ПОЧТОВЫЙ.АДРЕСС -  обновление почтового адресса 

cat /etc/letsencrypt/renewal/NAME_YOUR_DOMAIN.conf - так можно увидеть настройки, в частности ACCAUNT_ID (Этот файл может для использования в других командах)

error: instance of Certbot is already running


If it is not running, check whether there are .certbot.lock files in your system.

find / -type f -name ".certbot.lock"
If there are, you can remove them:

find / -type f -name ".certbot.lock" -exec rm {} \;

Дополнительная инфа ссылки:

https://community.letsencrypt.org/t/how-can-i-create-a-second-account-can-certbot-auto-eveb-handle-multiple-accounts/23647

Сертификат Let’s Encrypt и использование certbot
https://docs.plesk.com/ru-RU/obsidian/administrator-guide/%D0%B0%D0%B4%D0%BC%D0%B8%D0%BD%D0%B8%D1%81%D1%82%D1%80%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5-plesk/%D1%83%D0%BF%D1%80%D0%B0%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D0%B5-%D0%BD%D0%B0%D1%81%D1%82%D1%80%D0%BE%D0%B9%D0%BA%D0%B0%D0%BC%D0%B8-let%E2%80%99s-encrypt.78586/
Как изменить email после регистрации Certbot (Let’s Encrypt)
https://interface31.ru/tech_it/2017/04/poluchaem-sertifikaty-lets-encrypt-pri-pomoshhi-certbot.html https://habr.com/ru/post/318952/#proverim-poluchennyy-sertifikat https://community.letsencrypt.org/t/solved-another-instance-of-certbot-is-already-running/44690/6
Рубрики
apache \ nginx

nginx нет конфигов \ Debian 10

!!! Было на сервере куча веб серверов
!!! Захотелось установить еще nginx
!!! Ставим apt install nginx установился
!!! В каталоге /etc нет конфигов
!!! Смотрю на 80 порту висит apache2 
!!!  ss -tupln | grep :80 

0. Останавливаем веб серверы \ например у меня висел apache на 80 порту
sudo systemctl stop apache2
1. Удаляем свеже установленный nginx
sudo apt-get remove --purge nginx nginx-full nginx-common
2. Ставим по новой
sudo apt-get install nginx

P.S Все заработало. 
Настраиваем nginx на нужный порт и возвращаем apache2
sudo vim /etc/nginx/sites-available/default # конфиг не привожу...
sudo systemctl stop nginix
sudo systemctl start nginix
sudo systemctl stop apache2
Рубрики
apache \ nginx

LAMP debian / ubuntu

Mysql

1. Устанавливаем 
apt install mariadb-server mariadb-client 

2. Запускаем скрипт настройки mysql
mysql_secure_installation

3. Применяем настройки 
service mysql restart

Apache

apt install apache2 libapache2-mod-php curl 

sudo systemctl restart apache2
sudo systemctl status apache2

2) включить мод rewrite
a2enmod rewrite

PHP

apt search php- | less - показать все возможные php-
apt show php-cli - узнать для чего php-cli
apt install php php-mysql php-cli php-mysql php-mbstring php-zip php-gd- установим php с зависимостями

phpmyadmin

apt install phpmyadmin - до 9 дебина ставилось

Установка пакетов из backports
0. nano /etc/apt/sources.list - настраиваем репозитории, добавляем репозиторий backports
-----------------------------
deb http://deb.debian.org/debian buster-backports main
-----------------------------
1. apt-get update - обновляем список пакетов
2. apt-get -t buster-backports install "package" - ставим нужный пакет "package"
apt -t buster-backports install phpmyadmin - устанавливаем пакет phpmyadmin

UFW — firewall

sudo ufw app list
sudo ufw allow 'WWW'
sudo ufw status
ufw disable - отключить

MySQL/MariaDB reset password:

mysql --version  - узнаем версию mysql/miradb;
systemctl stop mysql - выключаем демон mysql
systemctl stop mariadb - выключаем демон mariadb
mysqld_safe --skip-grant-tables --skip-networking & - запускаем mysql без привилегий и без сети
mysql -u root - входим без пароля
--------------------------------------------------------
mysql> FLUSH PRIVILEGES;
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'new_password';  - сбрасываем пароль на MySQL/MariaD ровно или выше 5.7.6/10.1.20
mysql> SET PASSWORD FOR 'root'@'localhost' = PASSWORD('new_password'); - сбрасываем пароль на MySQL/MariaD ниже 5.7.6/10.1.20
mysql> FLUSH PRIVILEGES;
mysql> exit
--------------------------------------------------------
kill `cat /var/run/mysqld/mysqld.pid` - завершаем mysqld_safe --skip-grant-tables --skip-networking & 
kill `/var/run/mariadb/mariadb.pid` - завершаем mysqld_safe --skip-grant-tables --skip-networking & 
systemctl start mysql - запускаем в нормальном режиме
systemctl start mariadb - запускаем в нормальном режиме

Рубрики
apache \ nginx

LAMP \ CentOS

Установка LAMP:

yum -y install httpd - ставим веб сервер apache
yum -y install httpd-tools - ставим тулзы для httpd
systemctl enable httpd.service - включить автозагрузку httpd
systemctl start httpd.service - запустить 
yum -y install php - ставим php 
yum -y install php-mysql php-common php-mbstring php-gd php-ldap php-odbc php-pear php-xml php-soap php-xmlrpc php-snmp php-mcrypt php-devel php-xml curl curl-devel - ставим модули для php
yum -y install wget.x86_64
yum -y install mariadb-server mariadb mariadb-devel - установка mariadb.service
systemctl enable mariadb.service - включить автозагрузку mariadb.service
systemctl start mariadb.service - запустить mariadb.service

MySQL

_________________________________________

vi /etc/my.cnf -файл основных настроек
[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
symbolic-links=0
[mysqld_safe]
log-error=/var/log/mariadb/mariadb.log
pid-file=/var/run/mariadb/mariadb.pid
#add
bind-address=127.0.0.1
character-set-server=utf8
_________________________________________

mysql_secure_installation - команда начальной настройки (пароль для рута) 
Set root password? [Y/n] y - ставим пароль
Remove anonymous users? [Y/n] y - убрать анонимов
Disallow root login remotely? [Y/n] y - отключить вход root из сети
Remove test database and access to it? [Y/n] y - удалить тест базу
Reload privilege tables now? [Y/n] y - обновить привилегии
systemctl reload mariadb.service - перезапустить mariadb.service
_________________________________________

Установка phpmyadmin


yum -y install phpmyadmin - установка phpMyAdmin

nano /etc/httpd/conf.d/phpMyAdmin.conf
-----------------------CUT---------------------------- 

   AddDefaultCharset UTF-8
   
     # Apache 2.4
     
       Require ip 127.0.0.1 - разрешаем подключения с IP
       Require ip 10.0.0.0/24 - разрешаем подключения с IP
     
   
   
     # Apache 2.2
     Order Deny,Allow
     Deny from All
     Allow from 127.0.0.1 - разрешаем подключения с IP
     Allow from 10.0.0.0/24 - разрешаем подключения с IP
    


   
     # Apache 2.4
     
       Require ip 127.0.0.1 - разрешаем подключения с IP
       Require ip 10.0.0.0/24 - разрешаем подключения с IP
     
   
   
     # Apache 2.2
     Order Deny,Allow
     Deny from All
     Allow from 127.0.0.1 - разрешаем подключения с IP
     Allow from 10.0.0.0/24 - разрешаем подключения с IP
     

-----------------------CUT---------------------------- 

_________________________________________

Рубрики
apache \ nginx

.HTACCESS И .HTPASSWD

Пароль:

 

1. пишем в  /etc/apache2/httpd.conf
nano /etc/apache2/httpd.conf


 AuthName "Enter passwords"
 AuthType Basic
 AuthUserFile /var/www/.htpasswd
 Require valid-user User_Name


2. создаем файл .htaccess в паку куда ставим пароль 
touch .htaccess


3. создаем юзака и даем пароль эта прога сама создаст .htpasswd
htpasswd -c /var/www/.htpasswd User_Name

для запрета со всех IP кроме нужных:

 
0. Проверяем настройки apache
nano /etc/apache2/apache.conf в конце include - узнаем что и откуда подключается
ls /etc/apache2 - проверяем каталог apache
ls /etc/apache2/conf-enabled/ - возможная папка конфигураций
ls /etc/apache2/conf.d/ - возможная папка конфигураций
ls /etc/apache2/sites-available/ - доступные конфигурации
ls  /etc/apache2/sites-enable/ - включенные конфигурации

1. для запрета phpmyadmin со всех IP кроме нужных 
nano /etc/apache2/conf.d/phpmyadmin.conf

        AllowOverride AuthConfig
        Order deny,allow
        deny from all
        allow from 127.0.0.1
        ....Много текста.....


2.создаем пустой файл в нужной директории
touch .htaccess

redirect — перенаправление:

 
RewriteEngine On
RewriteCond %{HTTP_HOST} ^mirtashop.500mb.net
RewriteRule (.*) http://mirtashop.ru/$1 [R=301,L]


.htaccess запретить admin.php



    Order Deny,Allow
    Deny from all
    Allow from 192.168.0.1
    Allow from 192.168.0.99



.htaccess запретить xmlrpc.php

Одна из важных причин, из-за которой стоит отключить XML-RPC — это угроза безопасности вашего сайта. 
Злоумышленники часто используют эту лазейку для взлома пароля от админки вашего сайта, а также для DDoS-атаки.


order deny,allow
deny from all

Рубрики
apache \ nginx

Пароль на папку \ .htpasswd

Пример настройки:

0. редактируем конфиг апача httpd.conf
nano /etc/apache2/httpd.conf

AuthName "Введите пароль"
AuthType Basic
AuthUserFile /var/www/folderpass/.htpasswd файл с паролем
require vasya пользователь
require valid-user


1. Создание самого пароля 
htpasswd -c /var/www/folderpass/.htpasswd vasya
Рубрики
apache \ nginx

Включить мод rewrite

a2enmod rewrite
service apache2 restart (или /etc/init.d/apache2 force-reload)
Рубрики
certbot

certbot / letsencrypt / ssl / https

источники:

https://www.youtube.com/watch?v=HaLy92BTALI - хорошее видео
https://letsencrypt.org/
https://habr.com/post/354052/
https://habr.com/post/318952/
https://habr.com/post/142363/
https://habr.com/post/318952/#ustanovka-certbot
https://wiki.archlinux.org/index.php/Certbot_(%D0%A0%D1%83%D1%81%D1%81%D0%BA%D0%B8%D0%B9)
https://www.digitalocean.com/community/tutorials/how-to-configure-nginx-with-ssl-as-a-reverse-proxy-for-jenkins
https://certbot.eff.org/lets-encrypt/debianstretch-apache.html

Общая информация:

0) Certbot состоит из двух частей Активации и Установки
1) Активация - нужна для подтверждения владения доменом
2) Установка - выполняет непосредственную установку сертификатов
3) /etc/letsencrypt/ - каталог с файлами cerbot
4) /etc/letsencrypt/renewal - в этот каталог генерируются файлы для обновления сертификатов

Установка и активация с помощью файлов на nginx

apt-get install certbot python-certbot-nginx
certbot -a webroot -i nginx - установка (в debian 9 не сработает)
certbot - установка сертификата и настройка nginx ( в debian9+  аналог  (certbot -a webroot -i nginx)
certbot renew --dry-run - тестовая проверка
certbot renew - обновление сертификатов
certbot - установка сертификата и настройка nginx (в debian9+  аналог  (certbot -a webroot -i nginx))

certbot register --email ВАШ@ПОЧТОВЫЙ.АДРЕСС  - добавить адрес электронной почты для уведомлений об состоянии сертификата
certbot register --update-registration --email ВАШ@ПОЧТОВЫЙ.АДРЕСС - обновить адрес электронной почты для уведомлений об состоянии сертификата

Установка и активация с помощью DNS на nginx

 certbot -a dns-plugin -i nginx -d www.domen_name.com  -d domen_name.com --server https://acme-v02.api.letsencrypt.org/directory

Рубрики
apache \ nginx

nginx LEMP debian / ubuntu

Установка:

sudo apt update
sudo apt install nginx

apt install mysql-server
sudo mysql_secure_installation

apt install php-fpm php-mysql


Пример простого конфига:

nano /etc/nginx/sites-available/example.com
-------------------------------------------
server {
        listen 80;
        root /var/www/html;
        index index.php index.html index.htm index.nginx-debian.html;
        server_name example.com;

        location / {
                try_files $uri $uri/ =404;
        }

        location ~ \.php$ {
                include snippets/fastcgi-php.conf;
                fastcgi_pass unix:/var/run/php/php7.2-fpm.sock;
        }

        location ~ /\.ht {
                deny all;
        }
}
-------------------------------------------

listen — определяет, что будет прослушивать порт Nginx. 
         В данном случае он будет прослушивать порт 80, используемый по умолчанию для протокола HTTP.
root — определяет корневой каталог документа, где хранятся файлы, обслуживаемые сайтом.
index — задает для Nginx приоритет обслуживания файлов с именем index.php (при наличии) при запросе файла индекса.
server_name — определяет, какой серверный блок должен использоваться для заданного запроса вашего сервера. 
              Эта директива должна указывать на доменное имя или публичный IP-адрес вашего сервера.
location / — первый блок расположения включает директиву try_files, которая проверяет наличие файлов, соответствующих запросу URI. 
             Если Nginx не сможет найти соответствующий файл, будет возвращена ошибка 404.
location ~ \.php$ — этот блок расположения отвечает за фактическую обработку PHP посредством указания Nginx на файл конфигурации fastcgi-php.conf и файл php7.2-fpm.sock file, 
                    который объявляет, какой сокет ассоциирован с php-fpm.
location ~ /\.ht — последний блок расположения отвечает за файлы .htaccess, которые Nginx не обрабатывает. 
                   При добавлении директивы deny all из файлов .htaccess в корневой каталог документа они не будут выводиться посетителям.

Включение настроенного конфига на примере default:


sudo ln -s /etc/nginx/sites-available/default /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl reload nginx

Рубрики
apache \ nginx

Apache mod_rpaf

Ссылки:

https://wiki.dieg.info/nginx_apache_mod_rpaf
http://i-leon.ru/peredaem-realnyj-ip-v-svyazke-apache-nginx/
https://artkiev.com/blog/nginx-apache-remote_addr.htm
Рубрики
apache \ nginx certbot

nginx proxy forward https 443 <-- http 80

вводное

Этот вариант установки подходит только для серверов:
0. Все серверы за NAT
1. Один сервер Nginx фронт. Видно снаружи 80,443 порт
2. Сервер Nginx форвардит на другие серверы в локальной сети

Начало …

0. apt-get install nginx - установили nginx
1. отредактировали файл nginx.conf
nano /etc/nginx/nginx.conf
---nginx.conf---
----------------
user  www-data www-data;

worker_processes  auto;

events {
   worker_connections  1024;
}

http {
    include       mime.types;
    default_type  application/octet-stream;
    client_max_body_size 4000m;
    client_header_timeout  10m;
    client_body_timeout    10m;
    send_timeout           10m;
    keepalive_timeout      10m;
    sendfile        on;
   
server {
  listen 80;
   root /var/www/html;
   server_name DNS_NAME_SERVER.com www.DNS_NAME_SERVER.com;

  location / {
    proxy_pass http://DNS_NAME_SERVER;
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  }

}

}
----------------

2. Для того что бы не городить IP в конфиге nginx можно сделать следущие отредактировать файл host.
   Ну или настроить локальный DNS сервер.
nano /etc/hosts
---hosts---
127.0.0.1       localhost
127.0.1.1       nginx
IP-LOCAL-CLIENTA-WEB-SERVER-APACHE www.DNS_NAME.ru DNS_NAME.ru
IP-LOCAL-CLIENTA-WEB-SERVER-APACHE xxxx.DNS_NAME.com www.xxxx.DNS_NAME.com
IP-LOCAL-CLIENTA-WEB-SERVER-APACHE DNS_NAME.com
----------

Второе настраиваем сервер Nginx

Нужно на сервере где установлен Nginx организовать доступ к каталогу /var/www/html/.well-known для будущей работы Certbot 
Самый простой способ установить NFS сервер. 
Также можно использовать SSHFS. 
Ну или на хуйдой конец samba.

ssh — sshfs монтирование шары
Самый простой и не безопасный способ это NFS 0. Ставим NFS на сервер с Nginx apt-get install nfs-kernel-server nfs-common portmap - ставим mkdir /var/www/html/.well-known - создаем катало .well-known 1. Редактируем /etc/exports и добавляем IP которым можно подключатся по NFS nano /etc/exports ---export--- /var/www/html/.well-known IP-CLIENTA-WEB-SERVER-APACHE(rw,sync,no_subtree_check) ------------ 2. Применяем настройки exportfs -a - выполним чтобы изменения вступили в силу

Третье на сервере с Apache

0. Устанавливаем и создаем каталог
apt-get install nfs-common portmap rsync
mkdir /var/www/KATALOG-VASHEGO-SAITA/.well-known
1. nano /etc/fstab
---fstab---
IP_SERVER_NGINX:/var/www/html/.well-known /var/www/html/.well-known nfs
-----------
2. mount -a 

Ставим Certbot на сервер с nginx

0. ставим certbot 
apt-get install certbot python-certbot-nginx
1. Добавляем сертификаты для наших сайтов
certbot -a webroot -i nginx  - правильно ответив на вопросы конфиг nginx будет отредактирован certbot
Рубрики
apache \ nginx

old 2014 / LAMP на Debian / apache2 / nginx /

1) установка Apache + PHP + MySQL
apt update && apt upgrade - обновим установленные пакеты
apt install apache2 php php-mysql libapache2-mod-php php-mbstring php-zip php-gd - установим apache + php
apt install mysql-server mysql-client mysql-common - установим сервер баз данных Mysql


2) включить мод rewrite
a2enmod rewrite
3) включить сайт name.conf
/etc/apache2/sites-available/
a2ensite name.conf
4) включение мода alias ( нужен для работы Redirect / https://example.com/)
a2enmod alias
5) включаем мод ssl (https)
a2enmod ssl
6) включаем дефолтный конфиг default-ssl
a2ensite default-ssl
7) включаем модуль remout
a2enmod remoteip

Apachectl — утилита управления web-сервером Apache

apachectl -h - помощь
apachectl -v - версия
apachectl -S - показать виртуальные хосты\конфиги\директории
apachectl -t - проверка конфигурации
apachectl configtest - проверка конфигурации
apachectl fullstatus - состояние apache 
apachectl status - состояние apache 
apachectl -l - вывести список вкл модулей
apachectl -t -D DUMP_RUN_CFG - показать запускаемый конфиг
apachectl  -t -D DUMP_VHOSTS - показать настройки виртхостов

Популярные модули:

mod_alias
mod_authz_host
mod_deflate
mod_dir
mod_expires
mod_headers
mod_mime
mod_rewrite
mod_log_config
mod_autoindex
mod_negotiation
mod_setenvif

mod_rewrite в Apache


0)Включаем mod_rewrite:
a2enmod rewrite

1)Редактируем конфиг
nano /etc/apache2/sites-enabled/000-default
AllowOverride None
AllowOverride All

2)Перезагружаем Apache
service apache2 reload
service apache2 restart

пример конфигурации:

0) Создаем конфиг 
nano /etc/apache2/sites-available/site_name.conf


ServerName site_name.com
ServerAlias www.site_name.com
DocumentRoot /var/www/site_dir/

 Options FollowSymLinks
 AllowOverride All



1) Включаем конфиг 
a2ensite site_name.conf

Apache Virtual host


nano /etc/apache2/sites-available/default

	ServerName shop.ru
	ServerAlias http://www.shop.ru
	DocumentRoot /var/www/opencart



	ServerName glpi.ru
	ServerAlias http://www.glpi.ru
	DocumentRoot /var/www/glpi



ServerName redmine.ru
ServerAlias http://www.redmine.ru
DocumentRoot /usr/share/redmine/public

Options Indexes ExecCGI FollowSymLinks
Order allow,deny
Allow from all
AllowOverride all



проверка работы php

 
echo "" > /var/www/html/pi.php

проверка конфигурация apache

apache2ctl configtest

показать виртуальные хосты:

apache2ctl -S 

создание ключа и ssl-сертификата

 
openssl req -new -x509 -days 30 -keyout server.key -out server.pem
server.key - приватный ключ 
server.pem - публичный сертификат

убираем пароль с ключа

cp server.key{,.orig}
openssl rsa -in server.key.orig -out server.key
rm server.key.orig

скопируем их в /etc/ssl и назначим файлу ключа права чтения только администратору

sudo cp server.pem /etc/ssl/certs/
sudo cp server.key /etc/ssl/private/
sudo chmod 0600 /etc/ssl/private/server.key

nano /etc/apache2/sites-enabled/default-ssl.conf


        
                ServerAdmin webmaster@localhost
                DocumentRoot /var/www/html
                ErrorLog ${APACHE_LOG_DIR}/error.log
                CustomLog ${APACHE_LOG_DIR}/access.log combined
                SSLEngine on
                SSLProtocol all -SSLv2 - добавить строчку для включения SSLv2
                #SSLCertificateFile      /etc/ssl/certs/ssl-cert-snakeoil.pem
                SSLCertificateFile    /etc/ssl/certs/server.pem - публичный сертификат
                #SSLCertificateKeyFile /etc/ssl/private/ssl-cert-snakeoil.key
                SSLCertificateKeyFile /etc/ssl/private/server.key - приватный ключ 
                #SSLCertificateChainFile /etc/apache2/ssl.crt/server-ca.crt
                #SSLCACertificatePath /etc/ssl/certs/
                #SSLCACertificateFile /etc/apache2/ssl.crt/ca-bundle.crt
                #SSLVerifyClient require
                #SSLVerifyDepth  10
                
                                SSLOptions +StdEnvVars
                
                
                                SSLOptions +StdEnvVars
                
                BrowserMatch "MSIE [2-6]" \
                                nokeepalive ssl-unclean-shutdown \
                                downgrade-1.0 force-response-1.0
                BrowserMatch "MSIE [17-9]" ssl-unclean-shutdown
        

nginx frontend

user  www-data www-data; - пользователь и группа от которого запускается процесс
worker_processes  4; - кол-во рабочих процесса
#/var/log/nginx/error_log - лог для ошибок

events {
    worker_connections  1024; - максимум рабочих соединений
}

http {
    include       mime.types; -  Подключаем таблицу mime
    default_type  application/octet-stream;  - mime-тип по умолчанию
    client_max_body_size 4000m; - директива client_max_body_size задаёт максимально размер запроса клиент
    client_header_timeout  10m; - директива задаёт таймаут при чтении заголовка запроса клиента
    client_body_timeout    10m; - директива задаёт таймаут при чтении тела запроса клиента
    send_timeout           10m; - директива задаёт таймаут при передаче ответа клиенту
    keepalive_timeout      10m; - директива задаёт таймаут, в течение которого keep-alive соединение с клиентом не будет з$
    sendfile        on; - директива разрешает или запрещает использовать sendfile()
    #tcp_nopush     on; - директива разрешает или запрещает использовать опции TCP_NOPUSH во FreeBSD
    #client_header_buffer_size    4k; - директива задаёт размер буфера для чтения заголовка запроса клиента
    #large_client_header_buffers  4 4k; - директива задаёт максимальное число и размер буферов для чтения большого заголовка запро$
    #access_log  logs/access.log  main; - лог доступа всего веб-сервера
    #log_format  main  '$remote_addr - $remote_user [$time_local] $request ''"$status" $body_bytes_sent "$http_referer" ' '"$http_user_agent" "$http_x_forwarded_for"'; - формат лог файла

#server {
#  listen 80;
#  server_name  name.ru ;
#
#  location / {
#    proxy_pass http://IP_OR_DNS;
#    proxy_set_header Host $host;
#    proxy_set_header X-Real-IP $remote_addr;
#    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
#  }
#}

server {
  server_name  NAME_DNS.ru;
    rewrite ^ http://NAME.rU;
}

server {
  listen 80;
  server_name NAME_DNS;

  location / {
    proxy_pass http://IP_OR_DNS;
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  }
}

server {
  listen 80;
  server_name name_DNS.ru name_DNS_1.net ;
  location / {
    proxy_pass http://IP;
    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-Forwarded-For $remote_addr;
  }
}
Рубрики
apache \ nginx

LAMP настройка \ виртуальный хостинг / apache2

Источники:

http://easylinux.ru/node/291/
http://sys-it.ru/unix-admin/88-web-apache2-debian

Apache Virtual Hosts

Apache Virtual Hosts - несколько сайтов на одном сервере
Допустим на нашем сервере должны располагаться несколько сайтов и необходимо, чтобы при переходе по имени сайта открывались соответствующие этому сайту страницы, 
а при переходе по IP-адресу или по любому другому имени, кроме избранных, открывался сайт-заглушка, например со списком имеющихся сайтов или просто предупреждением. 
Все это можно организовать с помощью так называемых виртуальных хостов.
Основным конфигурационным файлом web-сервера является /etc/httpd/conf/httpd.conf и /etc/apache2/conf/apache2.conf соответственно.

* В конфигурационный файл свежи установленного web-сервера можно внести некоторые косметические исправления. 

Для этого среди многочисленных (и полезных) комментариев находим и раскомментируем директивы
ServerAdmin admin@mysite.ru  # почтовый адрес администратора 
ServerName mysite.ru:80      # имя сервера

в строке LanguagePriority переставляем ru на первое место
LanguagePriority ru en ca cs da de el eo es et fr he hr ...

Структура и общая информация

Сайты на сервере размещаются в отдельных каталогах. 
Удобнее, да и правильнее с точки зрения безопасности, создать для каждого сайта подкаталоги для хранения самих страниц, временных файлов, возможно cgi-скриптов и других полезностей. 
Можно пойти ещё дальше и организовать для каждого сайта отдельного SSH-пользователя.
В таком случае удобно размещать сайт в домашнем каталоге этого пользователя. Соответственно каталоги сайта будут иметь вид:

/home/site_user/mysite.ru/httpdocs 
# для страниц /home/site_user/mysite.ru/tmp 
# для хранения сессий и временных файлов /home/site_user/user/mysite.ru/cgi-bin 
# для скриптов

Однако в небольших системах, где SSH-доступом обычно пользуется только администратор сервера, в этом нет необходимости. 
Поэтому сайты размещают внутри папки /var/www, которую по умолчанию использует web-сервер.

/var/www/vhosts/mysite.ru/httpdocs       # для страниц
/var/www/vhosts/mysite.ru/tmp            # для хранения сессий и временных файлов
/var/www/vhosts/mysite.ru/cgi-bin        # для скриптов

Собственно допустим наши сайты называются first.ru и second.ru.

Раскомментируем директиву NameVirtualHost *:80 в третьей секции конфигурационного файла.

Создаем папки общую
$ mkdir /var/www/vhosts

для первого сайта
$ mkdir /var/www/vhosts/first.ru
$ mkdir /var/www/vhosts/first.ru/httpdocs

и для второго
$ mkdir /var/www/vhosts/second.ru
$ mkdir /var/www/vhosts/second.ru/httpdocs


Для каждого сайта в конфигурационный файл добавляем отдельную секцию


    ServerName first.ru
    ServerAlias http://www.first.ru
    DocumentRoot /var/www/vhosts/first.ru/httpdocs
    ErrorLog logs/first.ru-error.log



    ServerName second.ru
    ServerAlias http://www.second.ru
    DocumentRoot /var/www/vhosts/second.ru/httpdocs
    ErrorLog logs/second.ru-error.log



С реальными сайтами разобрались, теперь что произойдет с обращении к серверу по несуществующему адресу или при обращении по IP ? 
Если оставить все как есть, то будет открываться первый сайт first.ru , потому что, как ни странно:
The first VirtualHost section is used for requests without a known server name.

Поэтому перед секциями реальных сайтов добавляем секцию-ловушку, получается примерно так:

    ServerName default    


Теперь все запросы с неправильными именами сайтов и обращения по IP направляются в папку /var/www/html, где можно разместить простейшую индексную страницу.

Для вступления всех изменений в силу перезапускаем сервер
service httpd restart
/etc/init.d/apache2 restart

Дальше больше Приведенные выше секции содержат минимальный набор директив. 
Со временем возникает необходимость в дополнениях, которые описывают, например, свойства PHP или возможности .htaccess. 
Apache позволяет управлять достаточно большим количеством настроек. 
При необходимости следует обращаться к официальной документации http://httpd.apache.org Приведу пример секции VirtualHost для сайта domain.tld с синонимом another_domain.tld одного реально действующего сервера

AllowOverride All 
Options +Includes php_admin_value 
open_basedir /var/www/vhosts/domain.tld/ 
php_admin_value 
doc_root /var/www/vhosts/domain.tld/httpdocs php_admin_value 
upload_tmp_dir /var/www/vhosts/domain.tld/tmp/ php_admin_value sendmail_path "/usr/sbin/sendmail -t -i -fphp-sender@domain.tld"

Пример Debian и установка CMS Joomla на Apache2

Apache –  веб-сервер.
Его задача  – отдавать контент на запросы клиентов. 
Apache обладает большим функционалом за счет подключаемых модулей.

1)Установим классическую связку — Apache + PHP + MySQL:
#apt-get install apache2 mysql-server-5.0 php5 php5-gd php5-mysql acl
2)Создадим каталог для сайта и распакуем туда предварительно закаченную CMS joomla:

# mkdir /var/www/joomla

3)Сменим владельца каталога:

chown -R www-data.www-data /var/www/joomla/

4)Сменим права на каталог:

chmod -R 755 /var/www/joomla/

5)Создадим виртуальный хост для CMS joomla, по аналогии можно создать еще дополнительные виртуальные хосты (сайты):

vim /etc/apache2/sites-available/joomla.conf

Допишем в созданный файл:

ServerAdmin admin@joomla.ru
DocumentRoot /var/www/joomla

AllowOverride all
Order  allow,deny
Allow from all

ServerName joomla


6)В /etc/apache2/apache2.conf дописать:

ServerName localhost

7)Включим сайт:

a2ensite joomla

8)После выполнения этих команд нужно обновить конфигурацию apache:

# /etc/init.d/apache2 reload

9)Создаем БД для сайта:

#mysql -p

CREATE DATABASE joomla;

GRANT ALL PRIVILEGES ON joomla.* TO joomla_admin@localhost IDENTIFIED BY 'password';

Дополнительно:

1)/etc/apache2/apache2.conf - главный конфигурационный файл

2)Каталоги в /etc/apache2/:

mods-available - установленные в систему модули, хранит сами модули и их конфигурационные файлы
mods-enabled - подключенные модули, хранит ссылки на файлы в mods-available
sites-available - доступные сайты, хранит файлы описывающие виртуальные хосты
sites-enabled - подключенные сайты, хранит ссылки на файлы в sites-available

3)Четыре команды, которыми будем создавать и удалять ссылки в диалоговом режиме:
a2enmod - подключает модуль
a2dismod - отключает модуль
a2ensite - подключает сайт
a2dissite - отключает сайт

4) Если у Вас возникли проблемы с кодировкой веб-страниц, надо в конфиге apache2 (/etc/apache2/apache2.conf), 
задать параметр:
AddDefaultCharset Off

Рубрики
apache \ nginx

Сертификаты \ https \ ssl \кратко

Основы, Шифрование данных осуществляется на основе ассиметричного шифрования (asymmetric encryption). 
Суть этого метода заключается в том, что существует пара ключей, причем один ключ в этой паре является общедоступным (открытым), а другой — закрытым (тайным). 
Открытый ключ пригоден только для шифрования данных. 
Чтобы их расшифровать, нужен закрытый ключ.
При установке соединения между клиентом (веб-браузером) и сервером (Apache) сначала 
(на основе случайного числа, предоставляемого со стороны клиента, и открытого ключа — с сервера) создается общий ключ. 
Этот процесс называется рукопожатием, или квитированием. 
Такой ключ соединения (session key) потом применяется при шифровании всей дальнейшей коммуникации в рамках этого соединения.
Рубрики
apache \ nginx

apache2 в конфигах

DocumentRoot — указывает, и каком каталоге находятся HTML-файлы.

ServerAdmin — задает адрес электронной почты администратора виртуального хоста 
Этот адрес отображается, например, при сообщениях об ошибках. 
Здесь нужно указать адрес электронной почты, который действительно активен. Обычно он имеет вид webmasterfahostname.

ServerSignatur — определяет, должен ли Apache добавлять сигнатуру в конце самостоятельно сгенерированных сообщений (например, сообщений об ошибках, списках каталогов и т. д.). 
В сигнатур? указывается версия Apache, а также хост-имя. 
С ПОМОЩЬЮ ServerSignatur=EMail также можно задать адрес электронной почты администратора.

Loglevel — определяет, в каком объеме должны протоколироваться проблемы, возникающие с веб-сервером. 
Диапазон значений простирается от emerg (протоколируются только критические ошибки, приводящие к завершению работы Apache) 
до debug (протоколируется вся информация, даже отладочные тексты). 
Как правило, целесообразно задавать настройки error или warn.

ErrorLog — даст имя файла с протоколом, записывая это имя в сообщениях об ошибках.

Custom Log — указывает имя файла протокола доступа.
 В этом файле Apache записывает все успешные операции переноса файлов. 
В качестве второго параметра вы передаете либо имя заранее определенного формата логироьания, либо строку с собственными командами форматирования.
В Ubuntu в файле apache2.conf некоторые форматы заданы заранее например combined или common. 

 ErrorDocument — указывает, как Apache должен реагировать на ошибки. 
В качестве первого параметра задастся помер ошибки (например, 404 для not found (не найдено)), 
а в качестве второго параметра — имя локального файла или адрес внешнего сайта, который в таком случае будет отображаться.
Имя файла должно указываться относительно Document Root. 
Важнейшие коды ошибок:
400 — Bad Request (неверный запрос);
401 — Authorization Required (требуется авторизация);
403 — Forbidden (запрещено);
404 — Not Found (не найдено);
500 — Internal Server Error (внутренняя ошибка сервера).

По умолчанию ErrorDocument не конфигурируется. 
Чтобы избежать некрасивых сообщении об ошибках, нужно заранее приложить усилия и создать страницу для ошибок, указав в ErrorDocument, где она находится.

Alias — обеспечивает ассоциирован не веб-каталога с любым каталогом с жесткого диска (также вне DocumentRoot). 

Directorylndex — указывает, какой файл Apache должен отсылать, если адрес заканчивается на / и, таким образом, относится ко всему каталогу (по умолчанию это index.html). 
При этом можно указать и несколько файлов. В таком случае, Apach2 обрабатывает все введенные данные по порядку до тех пор, 
пока не будет найдено первое соответствие (например, Directorylndex index, php index, html),

Oplions — позволяет указывать различные параметры, действующие для дан-нош каталога. К таким параметрам относятся:
•    ExecCGI — позволяет выполнять сценарии CGI;
•    FoilowSymLinks — обеспечивает переходы по символьным ссылкам;
•    Includes — добавляет включаемые файлы (модуль mod_include);
•    Indexes — показывает список файлов, если отсутствует index, html;
•    MultiViews — автоматический выбор языка (модуль modjiegotiatioi).
Но умолчанию в Apache действует настройка All. 
При этом активны все параметры за исключением HultiViews. 
Конфигурация Ubuntu предусматривает большее количество ограничений: 
для всей файловой системы действует Options FollowSymLinks, для каталога /var/www — Options Indexes FollowSymLinks Multi Views.
Чтобы деактивировать отдельные параметры, но умолчанию заданные для вышестоящего каталога, перед ними нужно поставить знак "минус". 
Перед параметрами можно ставить и знак «плюс», но он не оказывает никакого действия: параметр с тем же успехом активизируется и без знака "плюс".
Из соображений безопасности при применении параметров необходимо следовать правилу «чем меньше, тем лучше». 
Например, параметр Indexes позволяет любопытному пользователю узнать имена всех файлов, находящихся в каталоге — если вы забудете создать index.html. 
Разумеется, это может представлять угрозу. MultiView может потребоваться только на многоязычных сайтах, где автоматически выбирается язык. 
Если на вашем сайте такая возможность не предоставляется, от этого параметра также можно отказаться.

AllowOverride — указывает, какие настройки, специфичные для конкретного каталога, могут быть изменены в файле .htaccess. 

На выбор предлагается:
AuthConfig — настройка метода аутентификации; 
Filelnfo — настройка типов файлов и документов; 
Indexes - модифицирование индекса каталогов; 
Limit — изменение прав доступа (ALlow, Deny, Order); 
Options - изменение параметров каталога.

Allow \ Deny

OrderAllow, Deny  - означает, что сначала интерпретируются вес правила Allow, а потом — все правила Deny. 
Если к попытке доступа к сайту не применяются какие-либо правила, доступ блокируется.

Order Deny, Allow — работает в обратном порядке по сравнению с предыдущим. 
Однако обратите внимание: если в таком случае к файлу не применимо ни одно из правил, доступ разрешается! 
Такой механизм действует в Apache по умолчанию.

Allowfrom — указывает, с каких хост-имен, либо IP-адресов, разрешен доступ. 
Например: Allow from 213.214.215.216 site.ru. 
Адресные пространства IP-адресов можно указывать в форме 213.214, или 213.214.0.0/255.255.0.0, или 213.214.0.0/16 (для 213.214.*.*). 
При задании хост-имен sait.ru приравнивается www.sait.ru, sub.sait.ru и т. д. 
Правило Allow from all разрешает любой доступ.

Deny from — работает прямо противоположным параметру Allowfrom образом и блокирует доступ к указанным хостам или, соответственно, адресам.