User Tools

Site Tools

This wiki is read only and for archival purposes only. >>>>>>>>>> Please use the new OpenWrt wiki at <<<<<<<<<<


Nginx is a high-performance http-server with other functions as well. It is a perfect candidate to run on OpenWRT due to the performance and memory handling.


opkg update
opkg install php5-fastcgi nginx

Of course there will be port issues if you installed LuCI before or after nginx, since LuCI package installs uhttpd, which also wants to claim port 80. So configuring and/or portforwarding may be neccessary. There are ways to run LuCI with another http daemon but that is not coverd here. For a quick fix, just change the uhttpd port to something else in /etc/config/uhttpd.

Configuration Files



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 ->
		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 a lot 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;
			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;     # The upstream determined above



cgi.force_redirect = 1
cgi.redirect_status_env = "yes";



If for what ever reason it was modified or wasn't, this one will work.

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;

Error Log

Error log is your friend. Logs are located "/var/log/nginx" by "default".

Read on nginx error log section for more information → nginx Core Module - Error Log

For nginx logging to syslog, see package nginx-syslog.


Make sure path's are correct for your case.

This setup works stable on tl-wr1043nd, can tell tho that Attitude Adjustment 12.09-rc1 ar71xx package still works on this device - confirmed by CraXyOW3.

doc/howto/http.nginx.txt · Last modified: 2014/11/29 11:51 by tmomas