Skip to content

Instantly share code, notes, and snippets.

@steve-chavez
Forked from gsanders5/example.nginx
Created January 13, 2020 17:11
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save steve-chavez/4c3e0e731d75ee3835360453b22a8a19 to your computer and use it in GitHub Desktop.
Save steve-chavez/4c3e0e731d75ee3835360453b22a8a19 to your computer and use it in GitHub Desktop.
Automatic nginx virtual subdomains with sub-folders or sub-directories
# Automatic nginx virtual subdomains with sub-folders or sub-directories
#
# Since the original source where I found this code is now offline, I have decided to mirror it here.
# All credit goes to: http://web.archive.org/web/20150307193208/http://www.messaliberty.com/2010/10/automatic-nginx-virtual-subdomains-with-sub-folders-or-sub-directories
#
# Description: In my web root directory I wanted create a folder called photos, and another called
# music using a sftp program. Without manually going back to the config file or to the shell I like to
# be able to access them at photos.nginxdomain.com and music.nginxdomain.com. That is what this config does.
# Redirect visitors from http://nginxdomain.com/ to http://www.nginxdomain.com/
server {
listen 80;
server_name nginxdomain.com;
rewrite ^/(.*) http://www.nginxdomain.com/$1 permanent;
}
# Serve http://www.nginxdomain.com/
server {
listen 80;
server_name www.nginxdomain.com;
root /home/domains/nginxdomain.com/public;
}
# Automatically create subdomains based on directory existence.
server {
listen 80;
server_name ~^(.*)\.nginxdomain\.com$;
# If a directory doesn't exist...
if (!-d /home/domains/nginxdomain.com/public/$1) {
# If a client requests a subdomain but the server does not have a folder to serve, redirect back to the main site.
rewrite . http://www.nginxdomain.com/ redirect;
}
# Sets the correct root
root /home/domains/nginxdomain.com/public/$1;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment