如何实现给每个注册用户生成固定独立的URL地址

使用二级域名作为独立url, nginx使用通配符配置域名绑定

这种方案浪费域名资源

官方文档 https://nginx.org/en/docs/http/server_names.html

本地测试

host文件增加三个配置

127.0.0.1 abc.pan-domain.stu
127.0.0.1 efg.pan-domain.stu
127.0.0.1 yangliuan.pan-domain.stu

nginx配置

server {
    listen 80;
    #通配符绑定
    server_name *.pan-domain.stu;
    root /home/yangliuan/Code/Study/PHP/pan-domain;
    index index.php;

    location ~ [^/]\.php(/|$) {
        fastcgi_pass unix:/dev/shm/php-cgi.sock;
        fastcgi_index index.php;
        include fastcgi.conf;
    }

    location ~ ^/(\.user.ini|\.ht|\.git|\.svn|\.project|LICENSE|README.md) {
        deny all;
    }
}

测试结果

对其中一个域名yangliuan.pan-domain.stu 进行优先级测试,增加单独的站点配置和绑定,

server {
    listen 80;
    server_name yangliuan.pan-domain.stu;
    root /home/yangliuan/Code/Study/PHP/test;
    index index.php;

    location ~ [^/]\.php(/|$) {
        #fastcgi_pass remote_php_ip:9000;
        fastcgi_pass unix:/dev/shm/php-cgi.sock;
        fastcgi_index index.php;
        include fastcgi.conf;
    }

    location ~ ^/(\.user.ini|\.ht|\.git|\.svn|\.project|LICENSE|README.md) {
        deny all;
    }
}

结果如下

说明 server_name指令中 指定名称的优先级大于通配符

yangliuan.pan-domain.stu 的优先级大于 *.pan-domain.stu

如果云平台可以调用平台的域名解析接口,添加子域名解析 或者使用*.xxxx.com 泛域名解析

最简单实用的方案,给每个用户生成一个固定的独立子路由

  1. 使用用户昵称 命名
  1. 用户唯一标识 命名