社区微信群开通啦,扫一扫抢先加入社区官方微信群
社区微信群
【第3.5期】访问公网ip+端口+路径
上一节主要讲的是http协议,这一节补充一点https的东西,然后直接上实战
本节是关于nginx科普的最后一篇,将完成访问域名+端口+路径功能(HTTPS)
——即终极任务
(我是笨? ^ ^l|
终极任务
【flask+宝塔】我在云服务器上,想做一个https协议的“https://域名:端口号”这样的网站,最好是在宝塔面板上设置
直接搬运百度
HTTPS证书是一种数字证书,类似于驾照、护照和营业执照的电子副本。这种证书通常是在网站服务器中配置的,因此也称为服务器证书。
HTTPS的作用:确保了网站的真实性,防止流量劫持;有利于网站的SEO,提升网站的排名;预防黑客篡改内容;提升公司的品牌形象和可信度
总而言之,HTTPS证书是一种安全性很高的证书。该证书可以在一定程度上保护网站的信息安全,防止信息被非法分子盗用。
什么是HTTPS证书?HTTPS证书含义及优势
各大平台都可以免费获取SSL证书,以下是华为云
点击下载,下载证书到本地,根据不同框架,证书也有不同的版本(应该也可以后面自行转化),记得下载对应版本
一般下载证书后面都会跟一个教程,结合【第3.5期】和教程,其实理解起来应该很快
这一部分我将从头开始搭一遍网站(之前的文件命名太乱,也记不得了
这一部分是3.5期的知识,详情请看上期,记得配置好安全组!
见上期
测试效果:
python3 test1.py
可以正常运行即可
uwsgi --http :6111 --wsgi-file uwsgi_py.py
如果出现如此处倒数第二行的问题,说明该端口已经被占用,需要把这个进程kill掉
调试方法 见此处
若出现
说明运行顺利~
浏览器访问公网ip:6111
说明成功访问???
通过virtualenv配置环境
当你没用nginx,调试项目的时候,使用http形式
http = 公网ip:8000
基于socket链接运行时,只有与nginx结合的时候,才使用socket形式
socket = 公网ip:8000
代码详情见上期,这个项目里命名为uwsgi_flask_py.py
uwsgi修改后配置如下
uwsgi --ini uwsgi.ini
效果如下图:
若修改了配置,可以使用
uwsgi --reload uwsgi/uwsgi.pid
重启
通过virtualenv配置环境
为了省事,这里就啥都没改了
cp uwsgi_flask_py.py nginx_uwsgi_flask.py
见上一期的配置:修改一处,添加两处,复制两个文件
附修改后,完整的nginx.conf
#user nobody;
worker_processes 1;
#error_log logs/error.log;
#error_log logs/error.log notice;
#error_log logs/error.log info;
#pid logs/nginx.pid;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
#log_format main '$remote_addr - $remote_user [$time_local] "$request" '
# '$status $body_bytes_sent "$http_referer" '
# '"$http_user_agent" "$http_x_forwarded_for"';
#access_log logs/access.log main;
sendfile on;
#tcp_nopush on;
#keepalive_timeout 0;
keepalive_timeout 65;
#gzip on;
server {
# listen 80;
listen 6112;
# server_name localhost;
server_name 139.159.204.67;
#charset koi8-r;
#access_log logs/host.access.log main;
location / {
root html;
index index.html index.htm;
}
location /helloWorld { # 此处的"/XXX"必须要和.py里一致!
include uwsgi_params;
# proxy_pass http://0.0.0.0:6111; # 用不了,An error occurred
# proxy_pass http://【公网IP】:6111; # 用不了,An error occurred
uwsgi_pass 0.0.0.0:6111; # 可以使用,记得配置uwsgi.ini两处改动
# uwsgi_pass 【公网IP】:6111; # 可以使用,记得配置uwsgi.ini两处改动
# uwsgi_pass unix:/root/hitsz/uwsgi_useless/uwsgi/uwsgi.sock;
# 测试了一下,下面三行注释掉好像也能跑,但是最好加上
uwsgi_param UWSGI_PYHOME /root/hitsz/csdnV3/venv; # 虚拟环境所在文件夹
uwsgi_param UWSGI_CHDIR /root/hitsz/csdnV3; # 主文件夹
uwsgi_param UWSGI_SCRIPT nginx_uwsgi_flask:app; # 左:.py的名字 右:.py里Flask的对象
}
#error_page 404 /404.html;
# redirect server error pages to the static page /50x.html
#
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
# proxy the PHP scripts to Apache listening on 127.0.0.1:80
#
#location ~ \.php$ {
# proxy_pass http://127.0.0.1;
#}
# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
#
#location ~ \.php$ {
# root html;
# fastcgi_pass 127.0.0.1:9000;
# fastcgi_index index.php;
# fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;
# include fastcgi_params;
#}
# deny access to .htaccess files, if Apache's document root
# concurs with nginx's one
#
#location ~ /\.ht {
# deny all;
#}
}
# another virtual host using mix of IP-, name-, and port-based configuration
#
#server {
# listen 8000;
# listen somename:8080;
# server_name somename alias another.alias;
# location / {
# root html;
# index index.html index.htm;
# }
#}
# HTTPS server
#
#server {
# listen 443 ssl;
# server_name localhost;
# ssl_certificate cert.pem;
# ssl_certificate_key cert.key;
# ssl_session_cache shared:SSL:1m;
# ssl_session_timeout 5m;
# ssl_ciphers HIGH:!aNULL:!MD5;
# ssl_prefer_server_ciphers on;
# location / {
# root html;
# index index.html index.htm;
# }
#}
}
思考:这时候会被重定向到6112还是6111端口?
回答:只有6112! 这才是重定向嘛~
cp uwsgi.ini nginx_uwsgi.ini
socket处的端口需要和nginx.conf中相对应
(修改3处;注释掉http,注释掉socket,重新添加socket)
在启动前,请确保杀死全部nginx/uwsgi进程(方法见下文)
命令大全
nginx -c XXX.conf
启动:以自定义的conf启动nginx文件
nginx -s reload
重启:重启nginx
nginx -s stop
停止:停止nginx
1.启动uwsgi
uwsgi --ini 【自定义.ini文件】
若已经开启uwsgi需要重启,可 kill 进程
2.启动nginx
nginx -c 【自定义.conf文件】
若已经开启nginx需要重启,可改用
nginx -c 【自定义.conf文件】 -s reload
或者 kill 进程
输入公网ip:linsten处端口号
以及公网ip:listen处端口号/路径
,检验效果
(有一部分被nginx主页面覆盖了)
思考:这时候按照上一个part的方法(6111)端口还能访问到吗?
回答:不能
https协议
开放对应端口,此处是4004
拷贝.crt
文件和.key
文件到/usr/local/nginx/
下的cert文件夹(新建,名字其实不重要)
在倒数第二行添加以下字段:
server {
listen 80;
listen 4004 ssl;
server_name 139.XXX.XXX.67 www.XXX.cn XXX.cn; # 我的域名
# ssl on;
ssl_certificate /usr/local/nginx/cert/server.crt;
ssl_certificate_key /usr/local/nginx/cert/server.key;
ssl_session_timeout 5m;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;
ssl_prefer_server_ciphers on;
location / {
root html; #站点目录
index index.html index.htm;
}
location /helloWorld {
include uwsgi_params;
# proxy_pass http://0.0.0.0:6111; # 用不了,An error occurred
# proxy_pass http://【公网IP】:6111; # 用不了,An error occurred
uwsgi_pass 0.0.0.0:6111; # 可以使用,记得配置uwsgi.ini两处改动
# uwsgi_pass 【公网IP】:6111; # 可以使用,记得配置uwsgi.ini两处改动
# uwsgi_pass unix:/root/hitsz/uwsgi_useless/uwsgi/uwsgi.sock;
# 测试了一下,下面三行注释掉好像也能跑,但是最好加上
uwsgi_param UWSGI_PYHOME /root/hitsz/csdnV3/venv; # 虚拟环境所在文件夹
uwsgi_param UWSGI_CHDIR /root/hitsz/csdnV3; # 主文件夹
uwsgi_param UWSGI_SCRIPT nginx_uwsgi_flask:app; # 左:.py的名字 右:.py里Flask的对象
}
}
- location部分与之前一致
- 细心观察就会发现这里跟.conf中注释掉的https段很像~
- (这段代码90%来自华为云官方)
最好是kill掉全部然后重启
常见的几个跟进程相关的指令(不好使)
ps -ef | grep 【进程名字】 # 也可以查看进程
ps aux | grep '【进程名字】' # 可以查看进程
# kill
kill -9 【进程号】 # 杀死某个进程
killall -s 9 -i【进程名字】 # 杀死带这个名字的全部进程 -i可以一一确认
参考资料
杀linux进程的几种命令详解
拉跨了家人们,不知道为什么┭┮﹏┭┮
找到了新的方法,能实现关键字匹配的目的?
ps -aux|grep 【关键字】|grep -v grep|cut -c 9-15|xargs kill -9
from:
关键字:linux,Kill,多个进程kill
注意关键字是uWSGI不是uwsgi!!!
结语:
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!