Differences

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

doc:howto:http.nginx [2012/09/21 15:51]
written_direcon
doc:howto:http.nginx [2014/06/05 19:11] (current)
tmomas Formatting corrected + outdated info removed (nginx is well available in BB)
Line 1: Line 1:
-Trial and error.+====== Nginx ======
-This is what I did to make PHP5 to work.+[[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.
-<code>opkg update +===== Installation ===== 
-opkg install php5-fastcgi</code>+<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''
-/etc/nginx/nginx.conf 
<code> <code>
-location ~ \.php$ { +user nobody nogroup; 
- root          /srv/www/; +worker_processes  1; 
- fastcgi_pass  127.0.0.1:1026+ 
- fastcgi_index  index.php; +error_log  logs/error.log; 
- fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name; +#error_log  logs/error.log  notice; 
- include        fastcgi_params;+#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> </code>
-/etc/php.ini+=== php.ini === 
 +''/etc/php.ini''
<code> <code>
-cgi.force_redirect = 0+doc_root = "YOUR/DOCUMENT/ROOT" 
 +cgi.force_redirect = 1
cgi.redirect_status_env = "yes"; cgi.redirect_status_env = "yes";
</code> </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]]
 +===== Notes =====
Make sure path's are correct for your case. 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.

Back to top

doc/howto/http.nginx.1348235462.txt.bz2 · Last modified: 2012/09/21 15:51 by written_direcon