Docs
Virtual hosts
All websites in Winginx are processed automatically by a default config. So, if you create a folder like this winginx\home\mysite.local\public_html, the website will be at work soon (no restart is needed) with URL http://mysite.local/ or http://www.mysite.local/. Don't forget to place this domain name in the hosts file manually or using HostsEditor.
The automatic configuration has the following settings:
- A listen directive is set to 127.0.0.1:80
- A server_name directive has value to mysite.local and its www alias — www.mysite.local
- Access log (access_log): winginx\logs\mysite.local-access.log
- Index files (index): index.php index.html
- Default charset (charset): utf-8
Locations (location):
# deny all requests starting with a dot (.htaccess, .user.ini, etc.) location ~ /\. { deny all; } # usual location for all requests starting with a slash / location / { } # locations for favicon.ico and robots.txt for fast URL processing location = /favicon.ico { } location = /robots.txt { } # PHP location: location ~ \.php$ { if (!-e $document_root$document_uri){ return 404; } fastcgi_pass localhost:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; }
This config is suitable in almost all cases.
But some times you may need an individual settings for a website, in this case you should create in the winginx\conf\vhosts folder a separate config file named to domain name plus .conf, e.g. mysite.local.conf.
After the config is added or edited, you should restart Winginx, double-click start-winginx.exe.
If something goes wrong after these manipulates, please read winginx\logs\error.log.
Here there are some examples.
server { listen 127.0.0.1:80; server_name test.local www.test.local; root home/test.local/public_html; index index.php index.html; log_not_found off; charset utf-8; access_log logs/test.local-access.log main; error_page 404 /404.html; error_page 403 /403.html; location ~ /\. { deny all; } location / { } location ~ \.php$ { if (!-e $document_root$document_uri){ return 404; } fastcgi_pass localhost:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } }
server { listen 127.0.0.1:80; server_name test.local www.test.local; root home/test.local/public_html; index default.php default.html; ... location ~ \.php$ { if (!-e $document_root$document_uri){ return 404; } fastcgi_pass localhost:9000; fastcgi_index default.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } }
Changing port from 80 to ... 8001 (any other)
server { listen 127.0.0.1:8001; server_name test.local www.test.local; ... }
server { listen 127.0.0.1:80; server_name test.local www.test.local test2.local test3.local test4.local; # не забываем добавить перечисленные домены в hosts ... }
server { listen 127.0.0.1:80; server_name test.local www.test.local; root home/test.local/public_html; index index.php index.html; log_not_found off; charset utf-8; access_log logs/test.local-access.log main; location ~ /\. { deny all; } location / { if (!-e $request_filename) { # if a file is missing, passing to Node.js proxy_pass http://localhost:1337; } } # files with the .php extensions are for PHP location ~ \.php$ { if (!-e $document_root$document_uri){ return 404; } fastcgi_pass localhost:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } # second case, special URL for Node.js location /chat/ { if (!-e $request_filename) { # if a file is missing, passing to Node.js proxy_pass http://localhost:1337; } } }