Nginx配置泛域名解析

之前的项目目录如下:

├─data 数据盘
│  ├─www            网站根目录
│  │  ├─project1    项目1
│  │  ├─project2    项目2
│  │  ├─project3    项目3
│  │  ├─project4    项目4

访问路径:

http://www.chaisz.xyz/project1/   项目1
http://www.chaisz.xyz/project2/   项目2
http://www.chaisz.xyz/project3/   项目3
http://www.chaisz.xyz/project4/   项目4

现在的项目目录如下:

├─data 数据盘
│  ├─www          
│  ├─project1    项目1
│  ├─project2    项目2
│  ├─project3    项目3

访问路径:

http://www.chaisz.xyz/         项目www
http://project1.chaisz.xyz/    项目1
http://project2.chaisz.xyz/    项目2
http://project3.chaisz.xyz/    项目3

域名云解析需要添加A记录,主机记录:*,记录值:服务器公网IP。

nginx config 更改:

server{
    listen 80 default_server;
    listen [::]:80 default_server ipv6only=on;
    root /data/$subdomain/public;
    # Make site accessible from http://localhost/
    server_name ~^(?<subdomain>.+).chaisz.xyz$;
    location / {
        index  index.php index.html index.htm;
         #如果请求既不是一个文件,也不是一个目录,则执行一下重写规则
         if (!-e $request_filename)
         {
            #地址作为将参数rewrite到index.php上。
            rewrite ^/(.*)$ /index.php/$1;
            #若是子目录则使用下面这句,将subdir改成目录名称即可。
            #rewrite ^/subdir/(.*)$ /subdir/index.php/$1;
         }
    }
    #proxy the php scripts to php-fpm
    location ~ \.php {
            include fastcgi_params;
            ##pathinfo支持start
            #定义变量 $path_info ,用于存放pathinfo信息
            set $path_info "";
            #定义变量 $real_script_name,用于存放真实地址
            set $real_script_name $fastcgi_script_name;
            #如果地址与引号内的正则表达式匹配
            if ($fastcgi_script_name ~ "^(.+?\.php)(/.+)$") {
                    #将文件地址赋值给变量 $real_script_name
                    set $real_script_name $1;
                    #将文件地址后的参数赋值给变量 $path_info
                    set $path_info $2;
            }
            #配置fastcgi的一些参数
            fastcgi_param SCRIPT_FILENAME $document_root$real_script_name;
            fastcgi_param SCRIPT_NAME $real_script_name;
            fastcgi_param PATH_INFO $path_info;
            ###pathinfo支持end
        fastcgi_intercept_errors on;
        fastcgi_pass   127.0.0.1:9000;
    }

    location ^~ /data/runtime {
    return 404;
    }

    location ^~ /application {
    return 404;
    }

    location ^~ /simplewind {
    return 404;
    }
}

如果要支持HTTPS需要买通配符域名证书,配置参考上面。
我的只有一个单域名证书, 只支持 www
443端口的配置就不修改了。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,973评论 19 139
  • 配置运行Nginx服务器用户(组) 用于配置运行Nginx服务器用户(组)的指令是user,其语法格式为: use...
    吃瓜的东阅读 4,537评论 0 41
  • 第一章 Nginx简介 Nginx是什么 没有听过Nginx?那么一定听过它的“同行”Apache吧!Ngi...
    JokerW阅读 32,803评论 24 1,002
  • 上一篇《WEB请求处理一:浏览器请求发起处理》,我们讲述了浏览器端请求发起过程,通过DNS域名解析服务器IP,并建...
    七寸知架构阅读 81,245评论 21 356
  • 好像成长到什么都能独当一面的阶段了,没有太多的来日可期也不会轻易地血脉偾张。睡到自然醒然后起床,把地板拖得干干净净...
    Alice王志荣阅读 204评论 0 0