nginx配置server模块的问题
世界只因有你
世界只因有你 2017-05-16 17:09:58
[Linux讨论组]

假设有5个二级域名:

aaa.example.com
bbb.example.com
ccc.example.com
ddd.example.com
eee.example.com

在配置nginx的时候,server模块是这样的:

server {
    listen 443 ssl http2;
    
    server_name  aaa.example.com;
    
    root   /var/www/aaa.example.com/public;
    index  index.php index.html index.htm;
    
    location / {
        root   /var/www/aaa.example.com/public;
        try_files $uri $uri/ /index.php?$query_string;
        index  index.php index.html index.htm;
    }


    location ~ \.php$ {
        try_files $uri /index.php =404;
        fastcgi_split_path_info ^(.+\.php)(/.+)$;
        fastcgi_pass   unix:/dev/shm/php-fpm.sock;
        fastcgi_index  index.php;
        fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
        include        fastcgi_params;
    }
    
    #...
    #...
    #...
}

问题:
1、有5个二级域名,必须要写5个server模块吗?可以写个通用的只用一个server模块吗?

2、如果写5个server模块的话,每个server模块中的location ~ \.php${ }模块是一样的,这个location ~ \.php${ }模块可以只写一遍来共用吗?也就是可以把它弄到server模块的上一层模块http模块去吗?

3、看到很多示例的root和index都要写两遍,server里面写一遍,下一层的location / { }模块中再写一遍,这是为什么?

世界只因有你
世界只因有你

全部回复(3)
我想大声告诉你
server_name ~^(?<site>(aa|bb|cc)\.example\.com)$;
root /var/www/$site/public; # location 里的root如果一样,可以不需要了,index也一样,大多数人是复制的
巴扎黑

1.当你的5个域名指向同一根目录,表示同一站点时,server_name可以指定多个域名,用空格分隔;当你的5个域名表示不同站点,就要配置多个server段,通常用include指令来引入多个conf文件,每个域名是一个conf文件。
2.location 指令只能是在server、location里;详见官方文档说明:

3.location里的root index 可以共用server里的root index.

淡淡烟草味

server name是可以指定多个域名的,用空格分隔

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号