1、centos7安装nginx
网上文档众多,但质量参差不齐,试了不少方法但各自都有各的缺陷,最后直接按照官网的文档完成了。
nginx安装官网教程:centos7的Nginx安装
简单来说,就是创建nginx.repo文件:
vi /etc/yum.repos.d/nginx.repo
然后写入配置:
[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/OS/OSRELEASE/$basearch/
gpgcheck=0
enabled=1
把baseurl=http://nginx.org/packages/OS/OSRELEASE/$basearch/中的“OS”该为“centos”(取决于你的系统),用“7”(取决于你的版本)替换“OSRELEASE”,然后wq保存退出,运行:
yum install nginx
中途选择y之后安装完成,开启nginx服务:
systemctl start nginx.service
此时打开浏览器,访问你的云主机IP,能够看到:
如果在这里出现问题,可以参考这个链接解决:点击打开链接
2、绑定域名
在Godaddy上申请域名,可以免去国内备案的繁琐步骤,Godaddy网站购买域名教程:点击打开链接
在vultr创建云主机,既能当作服务器做一些测试,又能科学上网,Vultr网站链接:点击打开链接
查看Vultr中的DNS服务器地址并且添加域名:
进入Godaddy账户下的DNS管理界面:修改DNS解析地址:
到这里顺利的话在浏览器上应该就可以直接通过域名访问你的云服务器的nginx服务了
3、申请SSL
我使用的是阿里提供的免费SSL服务,具体步骤可以参考链接的前半部分内容:阿里云申请免费SSL
注意,在这里虽然我没有用阿里的DNS解析服务,但是在填写个人信息那一步,仍然要勾选“证书绑定的域名在【阿里云的云解析】产品中”,不勾选的话后面会出问题。
如果证书申请成功,会返回给你一长串记录值(上面的链接里有这一步),获取到这个值以后进入vultr的dns管理界面,添加TXT的条目,如图所示,下拉框选择TXT,然后在Name和Data里添加刚才获取的记录值,包括其他几项内容,都和我的这个配置类似。
到这里没有问题的话,阿里的免费SSL应该就可以完成了,点击下载
随后选择下载证书for Nginx,解压之后会得到两个文件,分别是XXXX.key和XXXX.pem文件,如同文档里所述。
然后把这两个文件上传到远程云服务器上,由于我的本机是windows,所以需要使用pscp命令,具体怎么使用,参考链接:windows下的pscp的使用方法
4、修改Nginx配置文件
在云服务器/etc/nginx目录下,创建cert文件夹,然后把上面的两个文件传到cert目录下,如图
然后进入/etc/nginx/conf.d目录,vi打开default.conf,进行配置,如图所示:
重启Nginx服务之后,https访问尝试是否能成功访问
特别注意:哪怕到这一步以后,依然还是有很大可能使用https访问不成功,我经历过的原因可能会有几种:
(1)防火墙问题:由于我的系统是centos7,所以不再沿用以前的iptable模式,而是使用firewall命令,具体的命令参考链接:centos7防火墙操作
这里如果出现问题,主要的操作还是开放443端口:使用命令
firewall-cmd --zone=public --add-port=443/tcp --permanent
随后查看防火墙状态如图
(2)路径问题:这种问题可能是由于XXXX.pem和XXXX.key文件位置不正确,如果搞不清它的文件结构,那直接就复制阿里给的知道文档中的conf配置,然后/etc/nginx/conf.d目录下创建cert目录,再把那两个文件pscp过来
(3)如果以上两个问题都保证不会出错,但是依然无法访问,那还有可能是空格的问题,因为如果直接复制阿里给的文档配置,在XXXX.pem和XXXX.key的那两行里,路径和前面的ssl_certificate、ssl_certificate_key中间空了两个空格,把它们缩短为一个空格,然后重启Nginx服务(由于自己之前并没有在意这一点,以为这种脚本会有自动过滤多余空格的功能,导致耽误了不短时间),再试试。
在解决了众多可能的问题,坐做了多次尝试之后,终于能通过https访问了,如图:
5、docker下的安装
由于现在docker的普及,安装各种环境很方便,而且docker镜像库中就有Nginx的镜像,直接下载自动安装,只是以docker的方式安装的Nginx目录和裸机直接安装有些不同,但是配置都是类似的。为了方便,我就在这台云主机上安装了docker并且下载了Nginx镜像。docker的安装参考链接:centos7安装docker
开启docker服务:
service docker start
下载Nginx镜像同时运行:
docker run --name webserver -d -p 80:80 nginx
如果想找到安装的路径,使用命令
find -name nginx
下图中的红色框所示就是Nginx的核心文件所在了,其中的内容和裸机安装的方式一样,只是在cert的路径有些差异,自己可以根据之前的步骤进行修改,总之都是能够通过https访问到服务器的。