Crmgo Blog

Nginx

Nginx

Nginx to serwer HTTP o wysokiej wydajności, który pełni również inne funkcje. Ze względu na wydajność i zarządzanie pamięcią jest idealnym kandydatem do uruchomienia na OpenWRT. Uwaga dotycząca instalacji: w wydaniu barrier_breaker pakiety nginx nie są dostępne jako prekompilowane. Przeczytaj uwagi. Rozwiązanie: albo…

Nginx

Nginx to serwer HTTP o wysokiej wydajności, pełniący również inne funkcje. Ze względu na wydajność i zarządzanie pamięcią jest idealnym kandydatem do uruchomienia na systemie OpenWRT.

Instalacja

opkg update
opkg install php5-fastcgi nginx

Uwaga: w wersji barrier breaker pakiety nginx nie są kompilowane wstępnie. Zapoznaj się z notatkami.

Rozwiązanie: Spróbuj użyć opcji force-depends dla pobranego pakietu z wersji Attitude Adjustment (AA) lub przekompiluj go dla swojego konkretnego urządzenia.

http://downloads.openwrt.org/attitude_adjustment/12.09-rc1/ ARCH /generic/packages/nginx_1.2.2-1_ARCH.ipk

Oczywiście mogą wystąpić konflikty portów, jeśli zainstalowałeś LuCI przed lub po instalacji Nginx-a. Pakiet LuCI instaluje uhttpd, który również chce przejąć port 80. Może być więc konieczne skonfigurowanie i przekierowanie portów. Istnieją sposoby na uruchomienie LuCI z innym demona HTTP, ale nie jest to omawiane w tym artykule. Aby szybko rozwiązać problem, zmień po prostu port uhttpd na inny. Plik konfiguracyjny znajduje się w

/etc/config/uhttpd

Pliki konfiguracyjne

Pliki konfiguracyjne znajdują się w folderze /etc/, a własne pliki Nginx-a w osobnym folderze /etc/nginx/.

nginx.conf

/etc/nginx/nginx.conf

user nobody nogroup;
worker_processes  1;

error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;

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;		# Port, make sure it is not in conflict with another http daemon.
	        server_name  YOUR_SERVER;	# Change this, reference -> http://nginx.org/en/docs/http/server_names.html
		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;		# 60 sec should be enough, if experiencing alof of timeouts, increase this.
		output_buffers 1 32k;
		postpone_output 1460;

		root   /mnt/data/www;		# Your document root, where all public material is.

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

			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
			}
		}
	}
}

php.ini

/etc/php.ini

doc_root = "YOUR/DOCUMENT/ROOT"
cgi.force_redirect = 1
cgi.redirect_status_env = "yes";

fastcgi_params

Plik znajduje się w /etc/nginx/. Jeśli z jakiegokolwiek powodu został zmodyfikowany lub nie, poniższa konfiguracja powinna działać.

fastcgi_param  QUERY_STRING       $query_string;
fastcgi_param  REQUEST_METHOD     $request_method;
fastcgi_param  CONTENT_TYPE       $content_type;
fastcgi_param  CONTENT_LENGTH     $content_length;

fastcgi_param  SCRIPT_NAME        $fastcgi_script_name;
fastcgi_param  REQUEST_URI        $request_uri;
fastcgi_param  DOCUMENT_URI       $document_uri;
fastcgi_param  DOCUMENT_ROOT      $document_root;
fastcgi_param  SERVER_PROTOCOL    $server_protocol;
fastcgi_param  HTTPS              $https if_not_empty;

fastcgi_param  GATEWAY_INTERFACE  CGI/1.1;
fastcgi_param  SERVER_SOFTWARE    nginx/$nginx_version;

fastcgi_param  REMOTE_ADDR        $remote_addr;
fastcgi_param  REMOTE_PORT        $remote_port;
fastcgi_param  SERVER_ADDR        $server_addr;
fastcgi_param  SERVER_PORT        $server_port;
fastcgi_param  SERVER_NAME        $server_name;

# PHP only, required if PHP was built with --enable-force-cgi-redirect
fastcgi_param  REDIRECT_STATUS    200;

Uwaga: wpis mógł powstać z pomocą AI i redakcji. Odpowiedzialny: Dmytro Lomaka, Kaltenkirchen.