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

作者 : 开心源码 本文共2267个字,预计阅读时间需要6分钟 发布时间: 2022-05-12 共244人阅读

阿里云产品通用代金券,最高可领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引入

说明
1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长!
2. 分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
3. 不得使用于非法商业用途,不得违反国家法律。否则后果自负!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系管理员处理!
6. 本站资源售价只是摆设,本站源码仅提供给会员学习使用!
7. 如遇到加密压缩包,请使用360解压,如遇到无法解压的请联系管理员
开心源码网 » Linux下Nginx的HTTPS+多站点 虚拟主机配置

发表回复