Nginx на OpenWrt

Nginx + OpenWrt



Здравствуйте. В этой статье рассказано о том, как установить на роутер с OpenWrt быстрый и надёжный сервер Nginx.

Nginx — это HTTP-сервер, обратный прокси-сервер, почтовый прокси-сервер, а также TCP прокси-сервер общего назначения, написанный российским программистом Игорем Сысоевым. Nginx успешно работает на таких высоконагруженных ресурсах, как Яндекс, Mail.Ru, ВКонтакте и Рамблер.


Если Вы ещё не установили OpenWrt на свой роутер, то для получения подробной инструкции по этому вопросу, можете проследовать вот сюда.


Перейдём сразу к делу. Все операции проводятся на роутере TP-Link TL-MR3020, и так же справедливы для любого устройства под управлением OpenWrt.


Предполагается, что система перенесена на флешку и свободного места достаточно.

Если у Вас установлен Web-интерфейс Luci и соответственно сервер uhttpd, то его следует перенести на другой порт.
Делается это просто, надо отредактировать файл /etc/config/uhttpd


vi /etc/config/uhttpd

подсказка vi
Нажимаем символ "i".
Вносим изменения.
Нажимаем Esc.
Вводим последовательно символы :wq (: w-сохранить q-выйти)
Нажимаем Enter.
Файл отредактирован.



Замените 80 на 81, сохраните и рестартуйте uhttpd.

/etc/init.d/uhttpd restart

Теперь в вебку будете заходить по адрес:81


Обновляем репозиторий:

opkg update


Если Вы не планируете использовать PHP на своём сайте, то достаточно будет установить только сам сервер.

Устанавливаем nginx:

opkg install nginx


Переименовываем дефолтный конфигурационный файл /etc/nginx/nginx.conf

mv /etc/nginx/nginx.conf /etc/nginx/nginx.conf.old


Создаём свой:

vi /etc/nginx/nginx.conf


И вставляем в него нижеследующие:


user nobody nogroup;
worker_processes  1;


events {
    worker_connections  1024;
}

http {
    include       mime.types;
    sendfile        on;
    keepalive_timeout  65;

    server {
        listen       80; 
        #server_name  localhost;
        charset koi8-r;

        location / {
            root   /www;
            index  index.html index.htm;
        }
    }
}

Это примитивный конфиг, «чтоб заработало».


Создаём в папке /www файл index.html с приветствием )))

touch /www/index.html | echo Hello World! > /www/index.html


Добавляем сервер в автозагрузку и стартуем:

/etc/init.d/nginx enable

/etc/init.d/nginx start



В браузере видим Hello World!




Если нужен PHP, тогда устанавливаем вот так:

opkg install nginx php5 php5-fastcgi


Останавливаем сервер:

/etc/init.d/nginx stop

На ошибки не обращайте внимание.

Удаляем кнофиг:

rm /etc/nginx/nginx.conf


Создаём новый:

vi /etc/nginx/nginx.conf


И заполняем его вот этим:


user nobody nogroup;
worker_processes  1;
#error_log  logs/error.log;

events {
    worker_connections  1024;
}

http {
	include mime.types;
	index index.php index.html index.htm;
	default_type text/html;

	sendfile on;
	keepalive_timeout 65;
	gzip on;

	gzip_min_length  1k;
	gzip_buffers     4 16k;
	gzip_http_version 1.0;
	gzip_comp_level 2;
	gzip_types       text/plain application/x-javascript text/css application/xml;
	gzip_vary on;
	server {
	        listen       80;		
	        #server_name  YOUR_SERVER;	
		fastcgi_connect_timeout 300;
		fastcgi_send_timeout 300;
		fastcgi_read_timeout 300;
		fastcgi_buffer_size 32k;
		fastcgi_buffers 4 32k;
		fastcgi_busy_buffers_size 32k;
		fastcgi_temp_file_write_size 32k;
		client_body_timeout 10;
		client_header_timeout 10;
		send_timeout 60;		
		output_buffers 1 32k;
		postpone_output 1460;

		root   /www;	# корневая папка сервера	

		location ~ \.php$ {
			fastcgi_index  index.php;
			include        fastcgi_params;
			fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;

			if (-f $request_filename) {
				# Only throw it at PHP-FPM if the file exists (prevents some PHP exploits)
				fastcgi_pass    127.0.0.1:1026;     # The upstream determined above
			}
		}
	}
}

Конфиг с официального сайта.


Открываем файл /etc/php.ini

vi /etc/php.ini


Находим строки и приводим их следующему виду:

doc_root = "/www"
cgi.force_redirect = 1
cgi.redirect_status_env = "yes";


Создаём файл для проверки php:

touch /www/index.php | echo '<?php phpinfo(); phpinfo(INFO_MODULES); ?>' > /www/index.php


Cервер в автозагрузку и стартуем:

/etc/init.d/nginx enable
/etc/init.d/nginx start
/etc/init.d/php5-fastcgi enable
/etc/init.d/php5-fastcgi start



Переходим в браузер и видим информацию о PHP.




На этом всё. Копируйте Ваш сайт в папку /www и пользуйтесь.


Сайт nginx.


  • +145
  • 18364
Поддержать автора


Telegram-чат istarik

Задать вопрос по статье
Telegram-канал istarik

Известит Вас о новых публикациях






Комментарии (18)

0
Огромное спасибо!!! Как установить Wordpress на openwrt?
0
Здравствуйте. Я вордпрессом не пользовался, но думаю, что не должно отличаться от стандартной установки.
0
Еще раз здравствуйте. Пожалуйста сделайте топик на MySQL на основе «Nginx»
0
Статью напишу.

Вы хотите использовать MySQL на роутере? Мягко говоря, ему будет тяжеловато.
0
Я вчера пару статью читал про MySQL оказывается он много ресурсов жрет.Так вот вопрос можно-ли Sqlite присоединить к Ngnix, я пытался сам разоряться в этом но не получилось.
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.