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

apache2

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   сервер

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

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

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

php -S localhost:8080

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

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

2016   apache2   nginx   php   server   web

Cоздание .htpasswd

Иногда бывает так, что тестовый сервер располагается на домене/поддомене (или даже просто по открытому IP), а вам не очень бы хотелось, чтобы он был доступен поисковым роботам и любому постороннему взгляду. Здесь поможет htpasswd от apache.

Внешне это выглядит так:

Т. е. когда пользователь открывает страницу сайта, то у него запрашивается Логин и Пароль. Проверка происходит на стороне сервера и попасть на данную страницу смогут лишь «избранные» :) Данный способ достаточно надежен, так как проверка происходит на стороне сервера.

Для начала необходимо установить утилиту от apache:

sudo apt-get install apache2-utils

Далее, создаем файл htpasswd, в котором будет храниться логин и пароль:

htpasswd -mbc /home/my_dir/.htpasswd your_login your_password

your_login — это логин, your_password — это чистый пароль (не хеш). Апач создаст файл .htpasswd, внутри если заглянуть в него будет ваш логин и захешированный пароль.

Теперь, чтобы включить данную защиту, необходимо в корневую директорию вашего проекта (сайта) положить файл .htaccess (или если он у вас уже есть, то просто откройте его на редактирование).
Добавьте несколько строк:

AuthType Basic
AuthName "Access is Denied. Enter password"
AuthUserFile /home/my_dir/.htpasswd
require valid-user

Рестартаните апач и вуаля, все готово.

На заметку, при создании файла -mbc означают следующее:
-m Force MD5 encryption of the password.
-b Use the password from the command line rather than prompting for it.
-c Create a new file.

Соответственно, если вы будете вносить изменения в уже существующий файл htpasswd, то ключи будут выглядеть по другому:

htpasswd -mb /home/my_dir/.htpasswd your_login your_password
2016   .htaccess   .htpasswd   apache2   apache2-utils   linux   php   server   ubuntu