阿里云购买的ssl证书,上传到服务器/root/project/目录下
- vim /etc/nginx/nginx.conf --打开nginx配置文件
-
- # 添加如下配置
-
- server {
- listen 443 default ssl;
- listen [::]:443 default ssl;
- server_name _;
-
- ssl_certificate cert/domain name.pem; #路径/将domain name.pem替换成您证书的文件名。
- ssl_certificate_key cert/domain name.key; #路径/将domain name.key替换成您证书的密钥文件名。
- ssl_session_timeout 5m;
- ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
- ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
- ssl_prefer_server_ciphers on;
-
- location / {
- include uwsgi_params;
- uwsgi_pass 172.16.101.72:8000;
- }
-
- location /static/ {
- alias /root/project/static/;
- expires 30d;
- }
- #保存退出
-
- systemctl restart nginx -- 重启nginx让配置生效
-
修改项目中settings.py文件,添加https配置
- vim /code/izufang/izufang/settings.py --打开配置文件
-
- ---------------------------------------------------------------------
- #文件末尾添加https配置
-
- # 保持HTTPS连接的时间
- SECURE_HSTS_SECONDS = 3600
- SECURE_HSTS_INCLUDE_SUBDOMAINS = True
- SECURE_HSTS_PRELOAD = True
-
- # 自动重定向到安全连接
- SECURE_SSL_REDIRECT = True
-
- # 避免浏览器自作聪明推断内容类型(避免跨站脚本攻击风险)
- SECURE_CONTENT_TYPE_NOSNIFF = True
-
- # 避免跨站脚本攻击(XSS)
- SECURE_BROWSER_XSS_FILTER = True
-
- # COOKIE只能通过HTTPS进行传输
- SESSION_COOKIE_SECURE = True
- CSRF_COOKIE_SECURE = True
-
- # 防止点击劫持攻击手段(不允许使用<iframe>标签进行加载)
- X_FRAME_OPTIONS = 'DENY
- ----------------------------------------------------------------------
-
-
- #重启uwsgi
- pkill -9 uwsgi --强杀uwsgi进程
-
- nohup uwsgi --ini conf/uwsgi.ini & --启动uwsgi,后台运行
-
- netstat -ntlp --可以查看
-
域名解析(绑定域名)
- 在阿里的域名控制中心,选择控制台,选择域名解析,如果域名没有备案的话,测试了赶紧删除域名解析,如果
- 备案过了,那就可以随便挂起
-
- pip install django-cors-headers -- 三方库
-
配置settings.py文件
- INSTALLED_APPS = [
- ...
- 'corsheaders',
- ...
- ]
-
-
-
- MIDDLEWARE = [
- 'corsheaders.middleware.CorsMiddleware', #添加
- 'django.middleware.common.CommonMiddleware', #添加
- ...
- ]
-
-
-
- # # 配置允许跨域访问接口数据
- CORS_ORIGIN_ALLOW_ALL = True
- CORS_ALLOW_CREDENTIALS = True
- CORS_ORIGIN_WHITELIST = ()
- # # 跨域访问允许的请求头
- CORS_ALLOW_HEADERS = (
- 'accept',
- 'accept-encoding',
- 'authorization',
- 'content-type',
- 'dnt',
- 'origin',
- 'user-agent',
- 'x-csrftoken',
- 'x-requested-with',
- 'token',
- )
-
- # # 跨域访问支持的HTTP请求方法
- CORS_ALLOW_METHODS = (
- 'DELETE',
- 'GET',
- 'OPTIONS',
- 'PATCH',
- 'POST',
- 'PUT',
- )
-
-
- # # 避免浏览器自作聪明推断内容类型(避免跨站脚本攻击风险)
- SECURE_CONTENT_TYPE_NOSNIFF = True
-
腾讯云配nginx https
- ...
- upstream test01 {
- server 127.0.0.1:8001;
- server 127.0.0.1:8002;
- }
-
- server {
- listen 443 ssl;
- server_name _;
- ssl_certificate /root/project/ssl/1_tel.njll.vip_bundle.crt; # crt绝对路径
- ssl_certificate_key /root/project/ssl/2_tel.njll.vip.key; # 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;
-
- proxy_set_header Host $http_host;
- proxy_set_header X-Real-IP $remote_addr;
- proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
- proxy_set_header X-Forwarded-Proto $scheme;
- proxy_read_timeout 120s; #nginx代理等待后端服务器的响应时间
- proxy_connect_timeout 120s; #nginx代理与后端服务器连接超时时间(代理连接超时)
- proxy_send_timeout 120s; #后端服务器数据回传给nginx代理超时时间
-
- location / {
- proxy_pass http://test01;
- }
- }
- }
-
nginx 80跳443
- server {
- listen 80;
- server_name _;
-
- location / {
- rewrite ^(.*)$ https://$host$1 permanent;
- }
- }
-
-
- 或
- server {
- listen 80;
- server_name _;
- return 301 https://$host$request_uri;
- }
-
- gzip on;
- gzip_buffers 4 32k;
- gzip_types "*";
- gzip_vary on;
- gzip_min_length 1k;
- gzip_comp_level 6;
- gzip_http_version 1.1;
-
- <!DOCTYPE html>
- <html lang="en">
- <head>
- <meta charset="UTF-8">
- <title>loading...</title>
- </head>
- <body>
- </body>
- <script>
- if (/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent)) {
- // 如果用户使用移动设备访问
- window.location.href = "./shift/index.html";
- } else {
- // 如果用户使用桌面设备访问
- window.location.href = "./pc/index.html";
- }
- </script>
- </html>
-
- location /ws/ {#ws协议时
- proxy_http_version 1.1;
- proxy_set_header Host $host;
- proxy_set_header X-Real-Ip $remote_addr;
- proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
- proxy_set_header X-Nginx-Proxy true;
- proxy_redirect off;
- client_max_body_size 10m;
- proxy_pass http://127.0.0.1:8009;
- proxy_set_header Upgrade $http_upgrade;
- proxy_set_header Connection "upgrade";
- proxy_connect_timeout 300s;
- proxy_read_timeout 300s;
- proxy_send_timeout 300s;
- }
-
- location /backstage/api/submessage// {
- proxy_set_header Host $http_host;
- proxy_set_header X-Real-IP $remote_addr;
- proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
- proxy_set_header X-Forwarded-Proto $scheme;
- proxy_cache off;
- proxy_buffering off;
- proxy_pass http://127.0.0.1:8001;
- proxy_http_version 1.1;
- proxy_set_header Upgrade $http_upgrade;
- proxy_set_header Connection "Upgrade";
- }
-
如果你想要在Nginx中监听以.apk为后缀的请求,并配置自动下载和显示文件大小,你可以使用location指令的正则表达式匹配功能。
以下是一个示例配置,用于监听以.apk为后缀的请求,并设置自动下载和正确显示文件大小:
- location ~ \.apk$ {
- alias /path/to/apk;
- add_header Content-Disposition "attachment; filename=your-app.apk";
- add_header Content-Length 18874368;
- }
-
在上述配置中,location指令使用了正则表达式匹配,~表示进行正则匹配。\用于转义.字符,以确保匹配后缀为.apk的请求。
你需要将/path/to/apk替换为实际存放apk文件的目录路径。同样,将18874368替换为实际的apk文件大小(以字节为单位)。
这样配置后,当访问以.apk为后缀的URL时,Nginx将自动触发下载apk文件,并在下载过程中正确显示文件大小和下载进度。
请注意,这个配置将适用于所有以.apk为后缀的请求。如果你只想对特定的URL进行配置,可以根据需要进行调整。