nginx
How to install nginx on Centos
Add nginx repo first. To add it, create the file /etc/yum.repos.d/nginx.repo with you favorite text editor, for example:
nano /etc/yum.repos.d/nginx.repoThen insert the strings below and save the file:
[nginx] name=nginx repo baseurl=http://nginx.org/packages/centos/$releasever/$basearch/ gpgcheck=0 enabled=1Now you can install nginx with a simple command:
yum install nginxTo start nginx and allow it to start at boot:, type:
service nginx start chkconfig nginx onIf nginx doesn't start, make sure you haven't httpd service running and listening the same port (80). You can display running services with the command:
topIf you want to turn off httpd and disable it to start at boot, enter:
service httpd stop chkconfig httpd offMain config file is /etc/nginx/nginx.conf. Also you can add hosts and discribe them in additional conf files /etc/nginx/conf.d/*.conf. You can base on example config file /etc/nginx/conf.d/default.conf
How to install nginx on Debian.
First append nginx repo to /etc/apt/sources.list
deb http://nginx.org/packages/debian/ squeeze nginx deb-src http://nginx.org/packages/debian/ squeeze nginxNow install nginx
apt-get install nginxMake sure you haven't apache2 service running and listening the same port (80). You can display running services with the command:
topIf you want to turn off apache2 and disable it to start at boot, enter:
service apache2 stop update-rc.d -f apache2 removeService nginx is set to start at boot by default. To start it manually, enter:
service nginx startMain config file is /etc/nginx/nginx.conf. Also you can add hosts and discribe them in additional conf files /etc/nginx/conf.d/*.conf.
How to install nginx on Ubuntu.
First append nginx repo to /etc/apt/sources.list
deb http://nginx.org/packages/ubuntu/ lucid nginx deb-src http://nginx.org/packages/ubuntu/ lucid nginxNow install nginx
apt-get install nginxMake sure you haven't apache2 service running and listening the same port (80). You can display running services with the command:
topIf you want to turn off apache2 and disable it to start at boot, enter:
service apache2 stop update-rc.d -f apache2 removeService nginx is set to start at boot by default. To start it manually, enter:
service nginx startMain config file is /etc/nginx/nginx.conf. Also you can add hosts and discribe them in additional conf files /etc/nginx/conf.d/*.conf.
How to configure nginx server blocks
If you want to point several domains to one IP address you can use nginx server blocks.
Two Server Blocks, Serving Static Files
http { index index.html; server { server_name www.domain1.com; access_log logs/domain1.access.log main; root /var/www/domain1.com/htdocs; } server { server_name www.domain2.com; access_log logs/domain2.access.log main; root /var/www/domain2.com/htdocs; } }A Default "Catch All" Server Block
http { index index.html; server { listen 80 default_server; server_name _; # This is just an invalid value which will never trigger on a real hostname. access_log logs/default.access.log main; server_name_in_redirect off; root /var/www/default/htdocs; } }Wildcard Subdomains in a Parent Folder
server { # Replace this port with the right one for your requirements listen 80 default_server; #could also be 1.2.3.4:80 # Multiple hostnames separated by spaces. Replace these as well. server_name star.yourdomain.com *.yourdomain.com; # Alternately: _ root /PATH/TO/WEBROOT; error_page 404 errors/404.html; access_log logs/star.yourdomain.com.access.log; index index.php index.html index.htm; # static file 404's aren't logged and expires header is set to maximum age location ~* \.(jpg|jpeg|gif|css|png|js|ico|html)$ { access_log off; expires max; } location ~ \.php$ { include fastcgi_params; fastcgi_intercept_errors on; # By all means use a different server for the fcgi processes if you need to fastcgi_pass 127.0.0.1:YOURFCGIPORTHERE; } location ~ /\.ht { deny all; } }
Some troubleshooting
Problem: 403 Forbidden
Solution: For example if you have more than 1 domain at your nginx server and domain1 has links to domain2 which returns error 403 in browser, the problem could be in hotlinks. Open up your domain2 conf file and make sure it has domain1 in the list of valid referrers.
server { location ~* ^.+\.(gif|jpg|mpg|mp3|mpeg|avi)$ { valid_referers none blocked www.domain1.com domain1.com; if ($invalid_referer) { return 403; } root $root_path; } }Source: official nginx wiki