| ## |
| # File: |
| # virtual_hosts |
| # Description: |
| # This file is meant to deliver a basic understanding of server blocks. |
| ## |
| |
| ## |
| # You should look at the following URL's in order to grasp a solid understanding |
| # of Nginx configuration files in order to fully unleash the power of Nginx. |
| # http://wiki.nginx.org/Pitfalls |
| # http://wiki.nginx.org/Configuration |
| ## |
| |
| ## |
| # Every "virtual host" that you serve will need to be in its own server block. |
| # |
| # server { |
| # ... |
| # } |
| # |
| # After reading this file, you should understand the structure of server blocks |
| # and be able to understand how to modify them to your needs. |
| ## |
| |
| server { |
| |
| # The listen directive is only needed if this server block: |
| # needs to listen for IPv6 |
| # needs to listen on another port |
| # If you need to listen for IPv6 then both of the following lines can |
| # be included. |
| # DO NOT listen for both SSL and non-SSL in the same server block. |
| #listen 80; ## listen for ipv4; this line is default and implied |
| #listen [::]:80 default ipv6only=on; ## listen for ipv6 |
| |
| # root specifies the document root for the requests |
| root /usr/share/nginx/www; |
| |
| # index specifies the list of files (in order) to be tried in the event |
| # no file is requested in the URI. |
| index index.html index.htm; |
| |
| # Make site accessible from http://localhost/ |
| server_name localhost; |
| |
| # Unless you run everything as a proxy, you will want to have a root |
| # location block. This example controls how files are requested. |
| location / { |
| # First attempt to serve request as file, then as directory, |
| # then fall back to index.html. /index.html would normally be |
| # front end controller pattern for handling "clean url's" in |
| # a CMS such as Drupal or Wordpress. |
| try_files $uri $uri/ /index.html; |
| } |
| |
| # This location block would server any requests for /doc as well |
| # as anything below it. |
| location /doc { |
| # root changes the root directory for these requests |
| root /usr/share; |
| # autoindex on allows these request to display directory listings |
| # if a directory was requested |
| autoindex on; |
| # We'll allow these requests for localhost |
| allow 127.0.0.1; |
| # Anyone outside is forbidden |
| deny all; |
| } |
| |
| # This location block would serve any requests for /images as well |
| # as anything below it. |
| location /images { |
| # This is the same as /doc except we don't allow indexes |
| root /usr/share; |
| autoindex off; |
| allow 127.0.0.1; |
| deny all; |
| } |
| |
| # This will serve the file 404.html in the event the request is not found. |
| error_page 404 /404.html; |
| |
| # redirect server error pages to the static page /50x.html |
| # This will hit if the server generates a 500, 502, 503, or 504 status code |
| error_page 500 502 503 504 /50x.html; |
| |
| # This location block isn't actually needed because our root for the |
| # server block is the same directory. However, this could be used to |
| # have a central directory for all error html files. |
| location = /50x.html { |
| root /usr/share/nginx/www; |
| } |
| |
| # proxy the PHP scripts to Apache listening on 127.0.0.1:80 |
| # If you're going to proxy to Apache, then just push the whole |
| # request to it. You'll generally have better performance with |
| # a dedicated php listener (fastcgi: php-cgi, php-fpm). |
| #location ~ \.php$ { |
| # proxy_pass http://127.0.0.1; |
| #} |
| |
| # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000 |
| # This is used for passing to php-cgi and php-fpm. |
| # For more information see /usr/share/doc/nginx/examples/php |
| location ~ \.php$ { |
| # This is where the php socket is listening. |
| fastcgi_pass 127.0.0.1:9000; |
| fastcgi_index index.php; |
| include fastcgi_params; |
| } |
| |
| # deny access to .htaccess, .htpasswd, and .htgroup files |
| location ~ /\.ht { |
| deny all; |
| } |
| } |
| |
| |
| # another virtual host using mix of IP-, name-, and port-based configuration |
| server { |
| listen 8000; |
| listen somename:8080; |
| server_name somename alias another.alias; |
| root html; |
| index index.html index.htm; |
| |
| location / { |
| try_files $uri $uri/ /index.html; |
| } |
| } |
| |
| |
| # HTTPS server |
| server { |
| listen 443; |
| server_name localhost; |
| |
| root html; |
| index index.html index.htm; |
| |
| ssl on; |
| ssl_certificate cert.pem; |
| ssl_certificate_key cert.key; |
| |
| ssl_session_timeout 5m; |
| |
| ssl_protocols SSLv3 TLSv1; |
| ssl_ciphers "HIGH:!aNULL:!MD5 or HIGH:!aNULL:!MD5:!3DES"; |
| ssl_prefer_server_ciphers on; |
| |
| location / { |
| try_files $uri $uri/ /index.html; |
| } |
| } |