nginx:如何划分 /etc/nginx/conf.d/default.conf ?

Posted

技术标签:

【中文标题】nginx:如何划分 /etc/nginx/conf.d/default.conf ?【英文标题】:nginx: how to divide /etc/nginx/conf.d/default.conf ? 【发布时间】:2018-08-15 20:00:51 【问题描述】:

寻找一种划分 /etc/nginx/conf.d/default.conf 的方法,例如每个站点。任何想法? 当前文件如下所示:

 upstream Master_MAT 
    server 172.18.0.3:8080;
  

  upstream Master_PAT 
    server 172.18.0.4:8080;
 
 server 
    listen       80;
    server_name  localhost;

    #charset koi8-r;
    access_log  /var/log/nginx/access.log  main;
    error_log  /var/log/nginx/error.log  warn;

    root /etc/nginx/html;
    index index.html index.php;

    #charset koi8-r;

   location / 
    root /etc/nginx/html;
        try_files $uri /$uri $uri/ =404;
   

   location /Master_MAT 
        proxy_set_header Host $proxy_host;
        proxy_pass http://Master_MAT/Master_MAT;
#       proxy_redirect off;
        proxy_buffering off;
        proxy_set_header        Host    $host;
        proxy_set_header        X-Real-IP       $remote_addr;
        proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;
        
   location /Master_PAT 
        proxy_set_header Host $proxy_host;
        proxy_pass http://Master_PAT/Master_PAT;
#       proxy_redirect off;
        proxy_buffering off;
        proxy_set_header        Host    $host;
        proxy_set_header        X-Real-IP       $remote_addr;
        proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;
        

有没有办法将 Master_MAT 放在不同的文件中?尝试使用“包含”但失败。

谢谢

【问题讨论】:

【参考方案1】:

大多数人建议使用sites-enabledsites-available approach:

http 
    …
    include /etc/nginx/conf.d/*.conf;
    include /etc/nginx/sites-enabled/*;

现在您可以将“已禁用”的网站留在 sites-available 中,并在您希望使用时将其移动到 sites-enabled 文件夹中。

这是一个通配符,因此您可以为每个站点创建新的.conf 文件,它会自动加载它们。

这是/etc/nginx/sites-available/example.com内部内容的示例

server 
        listen 80 default_server;
        listen [::]:80 default_server;

        root /var/www/html;
        index index.html index.htm index.nginx-debian.html;

        server_name _;

        location / 
                try_files $uri $uri/ =404;
        

【讨论】:

不确定我是否了解每个文件的外观。你能更详细一点吗? THX 我添加了一个例子。服务器块内部的内容 100% 取决于您的用例和网站......但您会将所有内容包装在 server 块中 当我尝试创建多个文件时,我收到以下错误:2018/03/08 13:26:52 [emerg] 1028#1028: a duplicate default server for 0.0.0.0 /etc/nginx/conf.d/conf/New3.conf:2 中的 :80 nginx: [emerg] /etc/nginx/conf.d/conf/New3.conf 中 0.0.0.0:80 的重复默认服务器: 2 -- 有什么想法吗?? THX 您可能需要指定域。我猜是因为你有冲突的主机+端口匹配。这应该是一个单独的问题,因为它涉及到 Nginx 的内部。

以上是关于nginx:如何划分 /etc/nginx/conf.d/default.conf ?的主要内容,如果未能解决你的问题,请参考以下文章

Nginx——nginx作为负载均衡服务(负载均衡与nginx)

nginx:虚拟主机

[后端]nginx配置文件详解

nginx 11个处理阶段 && nginx lua 8个处理阶段

leetcode 763. Partition Labels 划分字母区间(中等)

链表划分