我是flask 处理请求单进程, 差点意思 , 考虑先flask 在往下走
一:安装nginx
因为我是debian 系统,所以我的建议是直接
sudo apt-get install nginx
你也可以选择在官网下载, 但是我搭建ssl 的时候安装openssl非常的麻烦, 好想nginx 和 openssl 的版本要一致, 又不能使用yum
, …
输入Y
这样就是安装好了
因为是默认的所以
你的程序应该在
/usr/sbin
里 如果没有 输入ps -ef | grep nginx
绿框里就是所在位置
配置文件在
/etc/nginx/
里如果没有 nginx -t
, 绿框里就是所在位置
访问ip 默认80端口 就可以看见下面的页面了
二:配置
直接去nginx.conf
开始配置
在 http 那个字典下 添加你的server
配置
server {
listen 8004;
server_name localhost;
access_log 针对这个接口存放文件的路径(一定要有);
location / {
proxy_pass http://ip:端口号/; (P1注释)
}
error_page 404 /404.html;
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
P1: 我前后端是没有分离的。所以是这么写, 如果前后端分离 ,要设置好调用的位置 例如:
location /static {
root /usr/by3.0/;
}
三:https
搞https 之前你先要有2个文件。
一个是 .crt
另一个是 .key
。 也有课可能是 .pem
和.key
文件
如果要是 某某云可以直接申请。具体流程我不清楚
将这俩个文件放到你觉得你能找到的位置
例如 :/opt/ssl_file/
下面这个写法我要没记错是版本小于15 才可以, 切记切记
server {
#监听443端口
listen 443;
#你的域名
server_name 域名;
ssl on;
#ssl证书的pem文件路径
ssl_certificate /opt/ssl_file/xxx.crt;
#ssl证书的key文件路径
ssl_certificate_key /opt/ssl_file/xxx.key;
location / {
proxy_pass http://ip:端口/;
}
}
server {
listen 8002;
server_name 域名;
#将请求转成https
rewrite ^(.*)$ https://$host$1 permanent;
}
}
这样就可以了
四:操作nginx
1、查看nginx安装目录
输入命令
ps -ef | grep nginx
返回结果包含安装目录
2、查看nginx.conf配置文件目录
输入命令
nginx -t
返回结果包含配置文件目录
3、启动
启动nginx系统方式:
(1)命令
nginx -c /usr/local/nginx/conf/nginx.conf
说明:-c 参数指定运行nginx系统的自定义配置文件。
若加:使用自定义配置文件。实例请参见下文停止
nginx系统的方式贴图。
若不加:使用默认的nginx.conf(一般位于/usr/local/conf/nginx.conf,具体以实际情况为准)
(2)shell脚本
新建start.sh文件,输入内容:
nginx -p
pwd
/… -c conf/nginx.conf
需要启动时,执行./start.sh 即可
4、停止
关闭nginx系统方式:
(1)命令
当nginx
启动后,可以使用-s
参数向nginx
管理进程(即master
进程)发送信号来控制nginx
:
nginx -s signal
其中,signal可以是以下值:
[1] stop
:快速关闭
[2] quit
:安全关闭
[3] reload
:重载配置文件
[4] reopen
:重新打开一个log文件,主要用于日志切割
注意:
1.quit
信号,通知nginx
等待worker
进程处理完当前的请求后退出,此命令只能由启动nginx
的linux
账户来执行。
2.reload
信号,通知nginx
重新载入配置文件nginx.conf
。 除了使用reload
外,nginx
只会在启动时载入一次配置文件,之后对配置文件的修改不会实时对已经运行的nginx
进程生效。
linux
的kill
命令也可以达到相同的作用,假设nginx
的pid
是123456
,那么 kill -s QUIT 123456
和 kill -s HUP 123456
这两条命令和前面quit、reload
的作用相同。
(2)shell脚本
新建stop.sh
文件,输入内容:
nginx -p
pwd
/… -c conf/nginx.conf -s quit
需要关闭系统时,执行./stop.sh即可
5、重载配置
重新加载配置文件
(1)命令
nginx -s reload
注意:reload重新加载的配置,仍为启动nginx系统时运行的配置文件(应用场景:可能会因业务需求调整,对配置文件做修改,估需重新加载之,也称热部署)
(2)shell脚本
新建reload.sh
文件,输入内容:
nginx -p
pwd
/… -c conf/nginx.conf -s reload
需要重新加载配置文件时,执行./reload.sh即可。
6、验证配置
不验证 配置出问题了, 线上就糟糕了 同志
验证配置文件方式
(1)命令
验证默认配置文件
nginx -t
验证自定义配置文件
nginx -t -c /home/test/conf/nginx.conf
(2)shell脚本
新建testconf.sh
,输入内容:
nginx -p
pwd
/… -c conf/nginx.conf -t
需要验证配置文件时,执行./testconf.sh
即可。
五:proxy_pass
规则如下:
nginx中配置location代理转发规则的时候不同写法对应不同转发规则。
如果proxy_pass使用了URI,当传送请求到后端服务器时,规范化以后的请求路径与配置中的路径的匹配部分将被替换为指令中定义的URI。
如果proxy_pass没有使用URI,传送到后端服务器的请求URI一般客户端发起的原始URI。
访问地址:http://localhost/api/abc.html
以下是几种常见的匹配情况:
1
location /api/ {
proxy_pass http://127.0.0.1:8080/;
}
这样会代理到http://127.0.0.1:8080/abc.html
1 端口后带/
location /api/ {
proxy_pass http://127.0.0.1:8080/;
}
这样会代理到http://127.0.0.1:8080/abc.html
2 端口后不带/
location /api/ {
proxy_pass http://127.0.0.1:8080;
}
这样会代理到http://127.0.0.1:8080/api/abc.html
3 端口后带接口+/
location /api/ {
proxy_pass http://127.0.0.1:8080/api/;
}
这样会代理到http://127.0.0.1:8080/api/abc.html
4 端口后带接口
location /api/ {
proxy_pass http://127.0.0.1:8080/api;
}
这样会代理到http://127.0.0.1:8080/apiabc.html
5 uri不带/ ,location 所拦截的接口也不带
location /api {
proxy_pass http://127.0.0.1:8080/api;
}
这样会代理到http://127.0.0.1:8080/api/abc.html
6 uri带/ ,location 所拦截的接口也不带
location /api {
proxy_pass http://127.0.0.1:8080/;
}
这样会代理到http://127.0.0.1:8080//abc.html
7 都不带/
location /api {
proxy_pass http://127.0.0.1:8080;
}文章来源:https://www.toymoban.com/news/detail-480642.html
这样会代理到http://127.0.0.1:8080/api/abc.html
再贴个官图
文章来源地址https://www.toymoban.com/news/detail-480642.html
到了这里,关于debian 部署nginx & https的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!