多站点部署

目录准备   

1.创建站点目录

创建testhtml目录作为站点目录

    mkdir  -p  /www/wwwroot/testhtm
由于个人习惯所以目录是放在/www/wwwroot/
多站点的话,其他站点也是会放在这个目录下

2.创建nginx配置文件指定目录

接上篇配置的nginx配置文件所在目录是/usr/src/nginx/

所以就在该目录下创建了vhost目录作为多个站点配置文件存放读取指定路径

    mkdir   /usr/src/nginx/vhost

配置文件创建及配置

1.创建对应站点的配置文件,如testhtml站点的配置文件,这边命名为testhtml.conf

vim  /usr/src/nginx/vhost/testhtml.conf

2.写入配置文件

范例:

    server {    
        listen 8080; # 监听端口   
       # server_name www.siteA.com siteA.com;    # 站点域名
        root  /home/user/www/blog;              # 站点根目录
        rewrite ^(.*)$ https://$host$1 permanent;  #转向https
        location ~ / {
            root  /home/user/www/blog;
            index index.html index.htm;
        }
    }
    server {
      listen       443 ssl;
      server_name  testa.inewmaker.com;
      ssl_certificate      cert/2012001_testa.inewmaker.com.pem;      #SSL证书
      ssl_certificate_key  cert/2012001_testa.inewmaker.com.key;
      ssl_session_cache    shared:SSL:1m;
      ssl_session_timeout  5m;
      ssl_ciphers  HIGH:!aNULL:!MD5;
      ssl_prefer_server_ciphers  on;
      location / {
          root  /home/user/www/blog;
          index  index.html index.htm;
      }
    }

实际操作:由于ssl下部分配置,当前配置无ssl部分故ssl部分删除

    server {    
        listen 80; # 监听端口   
        server_name www.angellilypure.cc angellilypure.cc;    # 站点域名
        root  /www/wwwroot/testhtml;              # 站点根目录
        location ~ / {
            root  /www/wwwroot/testhtml;
            index index.html index.htm;
        }
    }


修改nginx读取配置文件指向

1.备份nginx.conf文件
cp /usr/src/nginx/conf/nginx.conf  /usr/src/nginx/conf/nginx.confbak20191126
2.编辑nginx.conf文件,将虚拟目录的配置文件添加入“http{}”部分内(如图)

image.png

3.重启nginx
/usr/src/nginx/sbin/nginx -s reload


增加https配置(可选)

1.申请阿里云SSL证书,过程不赘述,具体可参照阿里云标准文档

image.png

2.下载证书并上传到服务器
3.配置conf文件

实际操作:

创建放证书的文件夹:

    mkdir  /usr/src/nginx/conf/cer
特别说明:nginx安装目录下的conf(如/usr/src/nginx/conf/)是默认路径,如果不是这个路径下的话,请务必在配置文件里填写完整的绝对路径,不可省略
将证书文件上传至该文件夹
添加防火墙443端口允许
firewall-cmd --add-port=443/tcp --permanent
    firewall-cmd --reload
配置/usr/src/nginx/vhost/testhtml.conf


    server {    
        listen 80; # 监听端口
        server_name www.angellilypure.cc angellilypure.cc;    # 站点域名
        root  /www/wwwroot/testhtml;              # 站点根目录
        rewrite ^(.*)$ https://$host$1 permanent;  #转向https
        location ~ / {
            root  /www/wwwroot/testhtml;
            index index.html index.htm;
        }
    }
    server {
      listen       443 ssl;
      server_name  www.angellilypure.cc;
      ssl_certificate      cer/3148804_www.angellilypure.cc.pem;      #SSL证书
      ssl_certificate_key  cer/3148804_www.angellilypure.cc.key;
      ssl_session_cache    shared:SSL:1m;
      ssl_session_timeout  5m;
      ssl_ciphers  HIGH:!aNULL:!MD5;
      ssl_prefer_server_ciphers  on;
      location / {
          root  /www/wwwroot/testhtml;
          index  index.html index.htm;
      }
    }


配置完成后重启nginx

重启时提示:nginx: [emerg] the "ssl" parameter requires ngx_http_ssl_module

image.png

这是由于在编译安装nginx时没有安装ssl模块,故还需单独安装ssl模块

安装编译模块

        1)切到nginx源码包

        cd ~/nginx-1.17.6/

        2)查看目前安装的nginx现有配置并重新编译

        /usr/src/nginx/sbin/nginx -V

        特别注意:V是大写

image.png

可以看到原先的配置是configure arguments: --prefix=/usr/src/nginx
那我们新配置信息应该要改成--prefix=/usr/src/nginx   --with-http_ssl_module
增加安装http_ssl_module模块
所以新的命令是
./configure  --prefix=/usr/src/nginx   --with-http_ssl_module
        make

    特别注意:不能make install 否则会覆盖安装

3)覆盖nginx文件
首先先备份nginx文件
cp  /usr/src/nginx/sbin/nginx   /usr/src/nginx/sbin/nginx.bak20191127
然后停止nginx
ps -ef |grep nginx   #查进程号

image.png

kill -quit  7823  (从容停止)
或者
kill -9  7823(强制停止)
覆盖nginx文件
cp ~/nginx-1.17.6/objs/nginx  /usr/src/nginx/sbin/

image.png

启动nginx
/usr/src/nginx/sbin/nginx
4}检查配置是否成功
/usr/src/nginx/sbin/nginx -V

image.png

配置变成configure arguments: --prefix=/usr/src/nginx --with-http_ssl_module
所以配置成功了
测试站点成功~至此配置SSL完成