Nginx subdomain configuration

前端 未结 2 1021
有刺的猬
有刺的猬 2020-12-07 09:04

I have nginx acting as a reverse proxy to apache. I now need to add a new subdomain that will serve files from another directory, but at the same time I want all location an

相关标签:
2条回答
  • 2020-12-07 09:24

    Another type of solution would be to autogenerate the nginx conf files via Jinja2 templates from ansible. The advantage of this is easy deployment to a cloud environment, and easy to replicate on multiple dev machines

    0 讨论(0)
  • 2020-12-07 09:32

    You could move the common parts to another configuration file and include from both server contexts. This should work:

    server {
      listen 80;
      server_name server1.example;
      ...
      include /etc/nginx/include.d/your-common-stuff.conf;
    }
    
    server {
      listen 80;
      server_name another-one.example;
      ...
      include /etc/nginx/include.d/your-common-stuff.conf;
    }
    

    Edit: Here's an example that's actually copied from my running server. I configure my basic server settings in /etc/nginx/sites-enabled (normal stuff for nginx on Ubuntu/Debian). For example, my main server bunkus.org's configuration file is /etc/nginx/sites-enabled and it looks like this:

    server {
      listen   80 default_server;
      listen   [2a01:4f8:120:3105::101:1]:80 default_server;
    
      include /etc/nginx/include.d/all-common;
      include /etc/nginx/include.d/bunkus.org-common;
      include /etc/nginx/include.d/bunkus.org-80;
    }
    
    server {
      listen   443 default_server;
      listen   [2a01:4f8:120:3105::101:1]:443 default_server;
    
      include /etc/nginx/include.d/all-common;
      include /etc/nginx/include.d/ssl-common;
      include /etc/nginx/include.d/bunkus.org-common;
      include /etc/nginx/include.d/bunkus.org-443;
    }
    

    As an example here's the /etc/nginx/include.d/all-common file that's included from both server contexts:

    index index.html index.htm index.php .dirindex.php;
    try_files $uri $uri/ =404;
    
    location ~ /\.ht {
      deny all;
    }
    
    location = /favicon.ico {
      log_not_found off;
      access_log off;
    }
    
    location ~ /(README|ChangeLog)$ {
      types { }
      default_type text/plain;
    }
    
    0 讨论(0)
提交回复
热议问题