环境:ubuntu
使用框架:flask+nginx
nginx配置路径:
/etc/nginx/sites-enabled/server
主服务器配置
设置backupserver
1 2 3 4 5
| upstream backupserver { server 主服务器ip:443; server 副服务器ip:443; keepalive 60; }
|
默认https配置
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| server { listen 443; server_name _; ssl on; ssl_certificate [pem文件路径]; ssl_certificate_key [key文件路径]; ssl_session_timeout 5m; ssl_protocols SSLv2 SSLv3 TLSv1 TLSv1.1 TLSv1.2; ssl_ciphers ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP; ssl_prefer_server_ciphers on;
location / { include uwsgi_params; uwsgi_pass unix:[flask sock 文件路径]; }
}
|
http配置(http不设置负载均衡)
1 2 3 4 5 6 7 8 9
| server { listen 80; server_name _;
location / { include uwsgi_params; uwsgi_pass unix:[flask sock 文件路径]; } }
|
负载均衡配置
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
| server { listen 443; server_name 主服务器域名; ssl on; ssl_certificate [pem文件路径]; ssl_certificate_key [key文件路径]; ssl_session_timeout 5m; ssl_protocols SSLv2 SSLv3 TLSv1 TLSv1.1 TLSv1.2; ssl_ciphers ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP; ssl_prefer_server_ciphers on; client_max_body_size 5M; location / { proxy_pass https://backupserver; proxy_http_version 1.1; proxy_set_header Connection ""; proxy_connect_timeout 75; proxy_read_timeout 300; proxy_send_timeout 300; proxy_buffer_size 64k; proxy_buffers 4 64k; proxy_busy_buffers_size 128k; proxy_temp_file_write_size 128k; } }
|
副服务器配置
http配置
1 2 3 4 5
| server { listen 80; server_name 副服务器域名; return 301 https://副服务器域名$request_uri; }
|
https配置
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
| server { listen 443; server_name _; ssl on; ssl_certificate [pem文件路径]; ssl_certificate_key [key文件路径]; ssl_session_timeout 5m; ssl_protocols SSLv2 SSLv3 TLSv1 TLSv1.1 TLSv1.2; ssl_ciphers ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP; ssl_prefer_server_ciphers on; client_max_body_size 5M; location / { include uwsgi_params; uwsgi_pass unix:[flask sock 文件路径]; proxy_http_version 1.1; proxy_set_header Connection ""; proxy_connect_timeout 75; proxy_read_timeout 300; proxy_send_timeout 300; proxy_buffer_size 64k; proxy_buffers 4 64k; proxy_busy_buffers_size 128k; proxy_temp_file_write_size 128k; }
location /api/dog_classification/recognition { proxy_pass https://主服务器域名; } }
|
至此配置完成,只需两个服务器中的api路径相同即可进行负载均衡,如果不需要负载均衡,则需要在副服务器配置,以免出现404.