nginx代理与自签证书以及python.bottle的那些坑
第一步先介绍下nginx 代理,自签证书ssl,python.bottle
nginx代理,顾名思义,是一个中间桥梁,为我们去接通两者(server,client)的中间商,为什么需要代理就要提到http和https 的关系了,不是本文重点,有兴趣去看这里自签名证书ssl吧,这是目前很多浏览器不认可的证书,因为相对官方签名不够安全,因为自签名证书相对于其他证书的时间太长,动不动就是10年,20年,有人直接99年,给黑客很多攻击时间和破解加密机会。但是官方证书要钱,没钱就只能自签。下面第三板块会讲到自签之路遇到的坑
python.bottle
在windows 的python 环境下安装命令
pip install bottle
在linux Python环境安装命令
pip3 install bottle
#或者直接用whl 包或者tar包安装门就不用改源了
为了后面说的清楚点,这里做一个简单的bottle服务器
import platform
from bottle import template, Bottle, request, response
import threading, time
root = Bottle()
@root.route('/hello/')
def index():
return template('<b>Hello {{name}}</b>!', name="world")
ip="192.168.0.110"
root.run(host=ip, port=8083)
10行代码写成的服务器,是不是很炫酷,虽然简单,但是确实是服务器,啊哈哈
功能也很简单,效果如下
但是这是在局域网中打开,只能是局域网中的人(基本就是你自己)能玩,想要像淘宝呀,京东呀,别想了,你想太多了
言归正传,想要在外网中访问本地的东西,正常协议是不可能的,不然岂不是外网的黑客可以随便入侵本地电脑了,当然也不是没有办法,不过与本文的主旨无关了
这里就要说到用nginx 代理实现在https 浏览器请求的情况下,仍然用http 的地址和端口接收到请求的信息
nginx 代理
1.安装之前说一句很重要的话,做好软件的备份工作
2.话不多说,上代码
sudo apt-get install nginx
最简单的安装方法,会默认安装到根目录的某个位置下,自己用find 去找吧,哈哈哈
如果提示网络不好,安装失败,那么就需要自己去下载tar包安装了,资源
3.选择框出来的几个包,比较新的下载一个,然后双击,呸,然后解压出来
tar -xf nginx-1.14.2.tar.gz
4.然后就是进入里面搞,事情
cd nginx-1.14.2
5.为了方便手残党,请跟着我的步骤来,下一步是用configure 命令来编译安装了
./configure & make &make install
6.等待安装完毕之后,就是测试看看有啥问题了,我是安装在/usr/local,自己根据自己的地址来
/usr/local/nginx/sbin/nginx -V
7.如果出来的结果不是这样的,恭喜你遇到问题了接着往下看吧
肯定会遇到问题的,因为我故意没有在命令行里加额外安装http_ssl_module的命令,一般nginx不会自动安装的,需要自己动手
./configure --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module & make & cp /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginx_bak & cp ./objs/nginx /usr/local/nginx/sbin/
以上命令专为和我一样的懒人准备的,总共是四个执行的操作,可以自己拆分分别执行,&分割的,第一句是重新编译nginx带http_ssl_module的,第二句是make,这很好理解,第三句是备份nginx的程序,防止翻车后无救,第四句就是覆盖了已经备份过的nginx
————————————————————————————————————————————————————
然后在执行前面第6步,发现和我的一样了
然后接下来就是nginx配置https了
配置下代理文件 进入 nginx/conf/,打开nginx.conf文件,然后改配置代理
server {
listen 80;
server_name 域名;
rewrite ^(.*) https://$server_name$1 permanent; #http 跳转 https
}
server {
listen 8080 ssl;
server_name 域名;
ssl_certificate /usr/lib/ssl/server.crt;
ssl_certificate_key /usr/lib/ssl/server.key;
ssl_session_cache shared:SSL:1m;
ssl_session_timeout 5m;
location / {
proxy_pass: http://127.0.0.1:8083 #或者 http://192.168.0.110:8083,不过不建议后者,除非你的地址是写死的,不用后者你就接收不到
}
}
上面的文件配好之后,就是启动nginx ,然后在浏览器看效果了,不过启动前先试试nginx配置对不对
/usr/local/nginx/sbin/nginx -t
如果不对,是下面这样的
缺少权限,命令前加sudo
如果是其他错误,应该就是配置文件出错或者证书配置出错了,没错就是这么生硬,接下来说说SSL证书的配置方法
ssl证书配置
首先,什么是ssl证书,为什么要用ssl 证书,我们的配置和ssl证书有什么关系,这些问题我都不会告诉你,自己百度
1.安装,一般的linux系统在装系统的时候就默认安装了,在/usr/lib/ssl
如果不幸没有,也表急,一句话命令安装
sudo apt-get install openssl
建议安装到系统的默认路径/usr/lib/ssl,先cd到位置再安装
安装成功之后,输入以下代码
sudo openssl genrsa -des3 -out server.key 1024 & sudo openssl req -new -key server.key -out server.csr -config openssl.cnf
生成server.key server.csr这两个文件在当前路径下
openssl req -new -x509 -keyout ca.key -out ca.crt -config openssl.cnf
自己给自己签名
openssl ca -in server.csr -out server.crt -cert ca.crt -keyfile ca.key -config openssl.cnf
生成自签名证书
好了,证书有了,nginx也有了,现在可以开始访问了
效果如下:
’’’
如果遇到了其他问题或者我的方法还有什么漏洞,欢迎指出,在 nginx bottle的安装或者编译的时候遇到问题,可以把问题发送到邮箱fastbiubiu@163.com,我会不定期查看,然后不定期地更新问题的解决方案到博客里。凭运气解决问题
‘’'
链接几篇不错的文章
python从爬虫开始(一)——Python3的安装与环境配置以及网络爬虫的手把手教学
好了,剩下自己百度吧,告辞!