美文网首页Linux码农的世界程序员
Linux下Nginx的HTTPS+多站点 虚拟主机配置

Linux下Nginx的HTTPS+多站点 虚拟主机配置

作者: QxQx | 来源:发表于2019-01-18 17:46 被阅读38次

    阿里云产品通用代金券,最高可领1888元代金券分享一波阿里云红包. 阿里云的购买入口

    对于访问量不大的服务器,只运行一个网站会不会觉得有点浪费资源,或者说有多个网站要部署,但是只有一台服务器,能不能在一台主机上运行多个网站呢。当然是可以的,可以使用不同的目录区分不同的网站,这种方法好处是比较简单,但是会造成网站文件混乱,在使用框架时可能会产生冲突,使用虚拟主机可以方便的解决这个问题。

    准备
    • 一个已经备案的域名
    • 一台有Nginx的服务器
    • ssl证书(不开启HTTPS可以忽略)
    1. 添加子域名。比如你注册的域名是qiandu.com,可以自己设置多个二级子域名比如m.qiandu.comapi.qiandu.com等等。以阿里云解析为例


      记录值选择A,主机记录直接填写二级域名就行,比如二级域名是m.qiandu.com,只要填写m就行。记录值就是服务器ip了,然后确定就可以了。添加了域名后,可以去下载一个免费的ssl证书。
    2. 配置ssl证书。(不适用HTTPS可以跳过)把从阿里云下载的证书放到服务器上,一边都放在Nginx配置文件的目录中,比如/etc/nginx,在这个目录中新建一个目录,比如ssl,然后把证书放到这里。注意,一定要有可读权限

    3. 配置Nginx。根据自己的具体情况,进入Nginx的配置文件目录,一般是/etc/nginx。一般会有一个conf.d目录或者vhost目录,什么名无所谓,只要是没有被占用的就行,然后编辑nginx.conf,在http节点中添加include /etc/nginx/conf.d/*.conf;
      在conf.d目录中添加一个配置文件,为了方便区分,一般都以域名作为文件名,比如域名为m.qiandu.com,新建m.qiandu.com.conf。然后添加配置信息

    server
    {
        listen 80;
        server_name m.qiandu.com;
        index index.html index.htm index.php default.html default.htm default.php;
        root  /home/www/m.qiandu.com;
        include php.conf;
        include rewrite/thinkphp.conf;
        location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
        {
            expires      30d;
        }
    
        location ~ .*\.(js|css)?$
        {
            expires      12h;
        }
    
        location ~ /.well-known {
            allow all;
        }
    
        location ~ /\.
        {
            deny all;
        }
    
        access_log off;
    }
    
    server
    {
        listen 443 ssl http2;
    #listen [::]:443 ssl http2;
        server_name m.qiandu.com;
        index index.html index.htm index.php default.html default.htm default.php;
        root  /home/www/m.qiandu.com;
        ssl on;
        ssl_certificate   /etc/nginx/ssl/m.qiandu.com.pem;
        ssl_certificate_key  /etc/nginx/ssl/m.qiandu.com.key;
        ssl_session_timeout 5m;
        ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
        ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
        ssl_prefer_server_ciphers on;
        include php.conf;
        include rewrite/thinkphp.conf;
        location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
        {
            expires      30d;
        }
    
        location ~ .*\.(js|css)?$
        {
            expires      12h;
        }
    
        location ~ /.well-known {
            allow all;
        }
    
        location ~ /\.
        {
            deny all;
        }
    
        access_log off;
    }
    
    

    第一个server是HTTP的配置,第二个是HTTPS的配置。
    server_name m.qiandu.com;是匹配的域名,只有当域名是m.qiandu.com 访问时,才会响应.
    root /home/www/m.qiandu.com; 是网站文件的的目录,注意,Nginx对这个目录有读写权限
    include是引入别的配置信息,我用的php,就引入了php的配置信息,还有重写配置。这个根据需要选择配置
    php.conf

    location ~ \.php$ {
        fastcgi_pass   127.0.0.1:9000;
        fastcgi_index  index.php;
        fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
        include        fastcgi_params;
    }
    

    有一些location是针对静态文件的访问控制。
    配置完,保存。
    service nginx restart 重启服务器,访问以下试试

    总结

    以上是Nginx虚拟主机的配置方法,只要你服务器能负载,可以配置多个站点,方法一样,添加配置文件就行
    其实所有的配置文件都可以写在nginx.conf文件中,但是为了方便阅读和修改,一般都是写在多个文件中,通过include引入

    相关文章

      网友评论

        本文标题:Linux下Nginx的HTTPS+多站点 虚拟主机配置

        本文链接:https://www.haomeiwen.com/subject/hzpndqtx.html