4 заметки с тегом

nginx

2017   apache2   nginx   php   php5.6   php7.1

Nginx и Apache в одной связке

Тема разжевана, но все же, в первую очередь для себя, как памятку сделаю. А может и еще кому пригодится.
На сервере Nginx будет обрабатывать только статичные запросы, а динамические запросы будет проксировать к Apache.
Проксирование будет происходить на определенный порт Apache, который будет доступен только локально. Т. е. извне попасть на этот порт будет нельзя.

Настройка Apache

sudo nano /etc/apache2/sites-available/000-default.conf

Конфиг может выглядеть так:

<VirtualHost 127.0.0.1:8080>
	ServerAlias mysite.ru
	DocumentRoot /var/www/mysite.ru
	<Directory /var/www/mysite.ru/>
		DirectoryIndex index.php
		Options FollowSymLinks
		AllowOverride None
		RewriteEngine on
		RewriteCond %{HTTP_HOST} ^www\.(.*) [NC]
		RewriteRule ^(.*)$ http://%1/$1 [R=301,L]

		# Если запрашиваемая в URL директория или файл существуют обращаемся к ним напрямую
		RewriteCond %{REQUEST_FILENAME} !-f
		RewriteCond %{REQUEST_FILENAME} !-d
		# Если нет - перенаправляем запрос на index.php
		RewriteRule . index.php
	</Directory>

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

Стоит обратить как указан VirtualHost:

VirtualHost 127.0.0.1:8080

Порт, соответственно, подберите сами.

Теперь включим порт:

sudo nano /etc/apache2/ports.conf

Пишем в данный файл:

Listen 127.0.0.1:8080

Сохраняем изменения и перезапустим Апач:

sudo service apache2 restart

Настройка Nginx

Создадим для нашего сайта новый конфиг

nano /etc/nginx/sites-available/mysite.ru

И вставляем в этот файл следующий кусок:

server {
	listen 80;
	listen [::]:80;

	root /var/www/mysite.ru;
	index index.php index.html index.htm;

	server_name mysite.ru;
	location / {
	    # Далее проксируем динамику на Апач
	    proxy_pass http://127.0.0.1:8080/;
	    proxy_set_header Host $host;
	    proxy_set_header X-Real-IP $remote_addr;
	    proxy_set_header X-Forwarded-For $remote_addr;
	    proxy_connect_timeout 120;
	    proxy_send_timeout 120;
	    proxy_read_timeout 180;
	}
	# Статику обрабатывает Нджинкс самостоятельно
	location ~* \.(jpg|jpeg|gif|png|ico|css|bmp|swf|js|html|txt)$ {
	    expires max;
	    root /var/www/mysite.ru;
	}
	# Запрещаем
	location ~ /\.(ht|svn|git) {
	    deny all;
	}
}

Сохраним изменения и рестартанем nginx:

sudo service nginx restart

А теперь в браузере набираем mysite.ru и проверяем работоспособность данной схемы.

2016   apache2   linux   nginx   nginx+apache   сервер

Comodo, ssl и nginx

Привет всем, и сегодня установим сертификат от Comodo!
На старте, открывает консоль Линукс-сервера:

openssl req -newkey rsa:2048 -nodes   -keyout opotemkin.key   -out opotemkin.csr

т. е. одновременно создаем приватный ключ opotemkin.key и csr-файл opotemkin.csr. Последний файл и надо отдать в Comodo.
Через некоторое время от Comodo придет ответ в виде архива, внутри которого вы увидите четыре файла:

  • AddTrustExternalCARoot.crt
  • COMODORSAAddTrustCA.crt
  • COMODORSADomainValidationSecureServerCA.crt
  • www_opotemkin_ru.crt

где ssl-сертификатом является www_opotemkin_ru.crt.

Необходимо провести проверку md5 хешем, чтобы убедиться, что присланный нам сертифкат SSL соответствует нашему приватному ключу opotemkin.key:

openssl req -noout -modulus -in opotemkin.csr | openssl md5
(stdin)= 836e6f7ca67b36229da84958b7ab5fc0

openssl rsa -noout -modulus -in opotemkin.key | openssl md5
(stdin)= 836e6f7ca67b36229da84958b7ab5fc0

openssl x509 -noout -modulus -in www_opotemkin_ru.crt | openssl md5
(stdin)= 836e6f7ca67b36229da84958b7ab5fc0

Теперь складываем данные файлы на нашем Линукс-сервере, например, сложим в /home/oleg/ssh-keys/
Теперь в целях безопасности зададим следующие права:

chmod -R 400  /home/oleg/ssh-keys/
chown -R www-data:www-data /home/oleg/ssh-keys/

Теперь создадим, т. н. бандл-сертификат (ca-bundle), внутри которого будет содержаться информация обо всех сертификатах, присланных Comodo.
Важно! Данный сертификат необходимо генерировать в определенном порядке!
Открываем консоль Линукса на сервере в директории, в которой лежат наши сертификаты:

cat www_opotemkin_ru.crt \ 
COMODORSADomainValidationSecureServerCA.crt \ 
COMODORSAAddTrustCA.crt \ 
AddTrustExternalCARoot.crt > www_opotemkin_ru.ca-bundle.crt

Чтобы корректно настроить nginx, вы можете прочитать следующий мануал nginx

В нашем случае это выглядит так:
Открываем на редактирование файл /etc/nginx/sites-available/default

Добавляем, ниже настроек для 80-го порта:

server {
	listen *:443 ssl;
	server_name opotemkin.ru www.opotemkin.ru;
	keepalive_timeout   70;

	ssl on;
	ssl_certificate /home/oleg/ssh-keys/www_opotemkin_ru.ca-bundle.crt;
	ssl_certificate_key /home/oleg/ssh-keys/opotemkin.key;

	ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
	ssl_ciphers HIGH:!aNULL:!MD5;

	ssl_session_cache shared:SSL:10m;
	ssl_session_timeout 10m;
	....
}

А для 80-го порта укажем следующее:

server {
        ...
        listen *:80;
        server_name opotemkin.ru www.opotemkin.ru;
        rewrite ^(.*) https://opotemkin.ru$1 permanent;
        ....
}

Осталось выполнить рестарт nginx:

nginx -s reload
2016   Comodo   linux   md5   nginx   openssl   ssl

Поднять веб-сервер без Apache2 и Nginx

А знаете ли вы, что простенький веб-сервер можно поднять и без необходимости установки и конфигурирования apache2 или nginx?

Находясь в директории нужного вам проекта, наберите в консоли:

php -S localhost:8080

В ответ вы увидите, что все заработало:

Соответственно, чтобы остановить текущий «сервер», достаточно нажать Ctrl + C

2016   apache2   nginx   php   server   web