这周的主要任务,是对项目进行收尾工作并上线,完整的体验了一下项目的上线过程,总的来说还是很有收获的,选取其中的nginx配置证书来写写。
证书配置
申请证书
证书配置的第一步,当然得有证书才行,这一步就不说了。
修改nginx配置
一般来说,只需要修改两个参数
ssl_certificate 和 ssl_certificate_key修改成你的证书所作的位置。
ssl_certificate对应的文件可能是.pem
ssl on 已被弃用,用listen……ssl代替
修改完以后,基本的配置就完成了,重启nginx
nginx -s reload
nginx:[emerg]unknown directive ssl
出现了这个错误,这是因为配置SSL证书需要引用到nginx的中SSL模块,然而我们一开始编译的Nginx的时候并没有把SSL模块一起编译进去,如何解决呢?解决办法也很简单
-
进入nginx的解压目录,执行
./configure --with-http\_ssl\_module
,这时若你的系统中未安装openssl
可能会出现错误,需要安装openssl
#ubuntu apt install openssl openssl-devel #centos yum -y install openssl openssl-devel
- 执行make命令,但是不要执行make install,因为make是用来编译的,而make install是安装,不然你整个nginx会重新覆盖的。
-
在我们执行完做命令后,我们可以查看到在nginx解压目录下,objs文件夹中多了一个nginx的文件,这个就是新版本的程序了。首先我们把之前的nginx先备份一下,然后把新的程序复制过去覆盖之前的即可。
cp /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginx.bak #备份 cp objs/nginx /usr/local/nginx/sbin/nginx
-
检验
./nginx -V
Permission denied
实际上,访问网站遇到的问题是500,开始第一反应是用500去查询,没找到什么有价值的,然后去看错误日志
原因是重定向循环了, 而之所以会这样是因为nginx的配置,
我们需要了解try_files
这个参数
try_files
语法格式
格式1:try_files _file_ ... _uri_;
格式2:try_files _file_ ... =_code_;
可应用的上下文:server,location段
官方解释
Checks the existence of files in the specified order and uses the first found file for request processing; the processing is performed in the current context. The path to a file is constructed from the_file_
parameter according to the root and alias directives. It is possible to check directory’s existence by specifying a slash at the end of a name, e.g. “$uri/
”. If none of the files were found, an internal redirect to the_uri_
specified in the last parameter is made.关键点1:按指定的file顺序查找存在的文件,并使用第一个找到的文件进行请求处理
关键点2:查找路径是按照给定的root或alias为根路径来查找的($uri)
关键点3:如果给出的file都没有匹配到,则重新请求最后一个参数给定的uri,就是新的location匹配
关键点4:如果是格式2,如果最后一个参数是 = 404 ,若给出的file都没有匹配到,则最后返回404的响应码
再结合上面的报错信息
也就大概明白上面为什么会循环了,
解决办法
发生这个错误是因为nginx无法进入该文件所在文件夹或无法读该文件,解决办法有很多,我选择了一个我觉得最简单的
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。