结合nginx配置域名访问及SSL证书
Django项目中的配置
配置域名访问
upstream django {
# nginx通过socket在环回接口地址的9001端口与本地的uWSGI进程通信
# 支持ip:port模式以及socket file模式
#server:同uwsgi配置中的本地端口配置;
server 127.0.0.1:8000;
}
server {
listen 80;
server_name 域名地址 公网IP;
charset utf-8;
client_max_body_size 75M;
# 如果写成/media/,nginx无法找到项目媒体文件路径
location /media {
alias /django项目路径/media;
}
# 如果写成/static/,nginx无法找到项目静态文件路径
location /static {
alias /django项目路径/static;
}
location / {
# nginx转发动态请求到uWSGI
uwsgi_pass django;
include uwsgi_params;
}
}
配置SSL证书
upstream django {
# nginx通过socket在环回接口地址的9001端口与本地的uWSGI进程通信
# 支持ip:port模式以及socket file模式
#server:同uwsgi配置中的本地端口配置;
server 127.0.0.1:8000;
}
server {
listen 80;
server_name 域名地址 公网IP;
charset utf-8;
client_max_body_size 75M;
#listen 443;
#ssl on;
#Nginx 版本为 nginx/1.15.0以上则使用listen 443 ssl 代替 listen 443 和 ssl on
listen 443 ssl;
server_name 域名地址;
#定义服务器的默认网站根目录位置
root django项目路径;
ssl_session_timeout 5m;
ssl_certificate /etc/nginx/1_xxx_bundle.crt;
ssl_certificate_key /etc/nginx/2_xxx.key;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2 TLSv1.3;
ssl_prefer_server_ciphers on;
fastcgi_connect_timeout 300s;#原设置为300s
fastcgi_send_timeout 300s;#原设置为300s
fastcgi_read_timeout 300s;#原设置为300s
# 如果写成/media/,nginx无法找到项目媒体文件路径
location /media {
alias /django项目路径/media;
}
# 如果写成/static/,nginx无法找到项目静态文件路径
location /static {
alias /django项目路径/static;
}
location / {
# nginx转发动态请求到uWSGI
uwsgi_pass django;
include uwsgi_params;
}
}
注意:要先把下载好的ssl证书中的nginx文件中的两个文件拷贝到服务器的/etc/nginx目录下。
配置http重定向https
upstream django {
# nginx通过socket在环回接口地址的9001端口与本地的uWSGI进程通信
# 支持ip:port模式以及socket file模式
#server:同uwsgi配置中的本地端口配置;
server 127.0.0.1:8000;
}
server {
#listen 80; #添加http重定向要删除
server_name 域名地址 公网IP;
charset utf-8;
client_max_body_size 75M;
#listen 443;
#ssl on;
#Nginx 版本为 nginx/1.15.0以上则使用listen 443 ssl 代替 listen 443 和 ssl on
listen 443 ssl;
server_name 域名地址;
#定义服务器的默认网站根目录位置
root django项目路径;
ssl_session_timeout 5m;
ssl_certificate /etc/nginx/1_xxx_bundle.crt;
ssl_certificate_key /etc/nginx/2_xxx.key;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2 TLSv1.3;
ssl_prefer_server_ciphers on;
fastcgi_connect_timeout 300s;#原设置为300s
fastcgi_send_timeout 300s;#原设置为300s
fastcgi_read_timeout 300s;#原设置为300s
# 如果写成/media/,nginx无法找到项目媒体文件路径
location /media {
alias /django项目路径/media;
}
# 如果写成/static/,nginx无法找到项目静态文件路径
location /static {
alias /django项目路径/static;
}
location / {
# nginx转发动态请求到uWSGI
uwsgi_pass django;
include uwsgi_params;
}
}
server {
listen 80;
#填写绑定证书的域名
server_name 域名地址;
#把http的域名请求转成https
return 301 https://$host$request_uri;
}
注意:必须注释掉上面的 listen 80;
配置域名重定向到指定路由
若想将域名访问(www.xxx.com)直接重定向到指定路由(www.xxx.com/index)
# 使用location /index 替换location /
location / {
# nginx转发动态请求到uWSGI
uwsgi_pass django;
include uwsgi_params;
}