thinkphp5 + vue 配置

server {

    listen 80;
    listen [::]:80;

    # For https
    listen 443 ssl;
    listen [::]:443 ssl;
    ssl_certificate /etc/nginx/ssl/xxx.pem;
    ssl_certificate_key /etc/nginx/ssl/xxx.key;
    if ($scheme = 'http')
    {
        return 301 https://$server_name$request_uri;
    }

    #auth
    auth_basic on;
    auth_basic_user_file /etc/nginx/ssl/.auth;

    #gzip
    gzip on;
    gzip_comp_level 6;
    gzip_min_length 1024;
    gzip_buffers 32 4K;
    gzip_types application/javascript text/css;

    server_name xxx;
    index index.php index.html index.htm;

    # For vue
    location / {
        root /var/www/xxx/dist/;
        try_files $uri $uri/ /index.html;
    }

    location ~* \.(jpg|jpeg|png|gif|js|css|mtn)$ {
        expires 1d;
    }

    # For thinkphp5
    location ~ ^/api/ {
        if (!-e $request_filename) {
            rewrite  ^/api/(.*)$  /index.php?s=/$1  last;
        }
    }

    location ~ \.php$ {
        root /var/www/xxx/php/public;
        fastcgi_pass php-upstream;
        fastcgi_index index.php;
        fastcgi_buffers 16 16k;
        fastcgi_buffer_size 32k;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        #fixes timeouts
        fastcgi_read_timeout 600;
        include fastcgi_params;
    }


    location ~ /\.ht {
        deny all;
    }


    location /.well-known/acme-challenge/ {
        root /var/www/letsencrypt/;
        log_not_found off;
    }


    error_log /var/log/nginx/xxx_error.log;
    access_log /var/log/nginx/xxx_access.log;
}
12-30 14:02