User Tools

Site Tools


doc:howto:http.nginx

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
doc:howto:http.nginx [2012/09/21 15:51]
written_direcon
doc:howto:http.nginx [2014/11/29 11:51] (current)
tmomas nginx-syslog added
Line 1: Line 1:
 +====== Nginx ======
  
 +[[http://​wiki.nginx.org/​|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.
 +
 +===== Installation =====
 +<​code>​
 +opkg update
 +opkg install php5-fastcgi nginx
 +</​code>​
 +
 +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 ====
 +
 +=== nginx.conf ===
 +
 +''/​etc/​nginx/​nginx.conf''​
 +
 +<​code>​
 +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 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 ​   127.0.0.1:​1026; ​    # The upstream determined above
 + }
 + }
 + }
 +}
 +</​code>​
 +
 +=== php.ini ===
 +''/​etc/​php.ini''​
 +<​code>​
 +doc_root = "​YOUR/​DOCUMENT/​ROOT"​
 +cgi.force_redirect = 1
 +cgi.redirect_status_env = "​yes";​
 +</​code>​
 +
 +=== fastcgi_params ===
 +''/​etc/​nginx/​fastcgi_params''​
 +
 +If for what ever reason it was modified or wasn'​t,​ this one will work.
 +
 +<​code>​
 +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;
 +</​code>​
 +
 +===== Error Log =====
 +Error log is your friend.
 +Logs are located "/​var/​log/​nginx"​ by "​default"​.
 +
 +Read on nginx error log section for more information -> [[http://​wiki.nginx.org/​CoreModule#​error_log|nginx Core Module - Error Log]]
 +
 +For nginx logging to syslog, see package ''​nginx-syslog''​.
 +
 +===== Notes =====
 +Make sure path's are correct for your case.
 +
 +This setup works stable on [[toh/​tp-link/​tl-wr1043nd]],​ can tell tho that Attitude Adjustment 12.09-rc1 ar71xx package still works on this device - confirmed by CraXyOW3.