Nginx是一款自由的、开源的、高性能HTTP服务器和反向代理服务器。

  1. 轻量级,同样起web服务,比 apache占用更少的内存及资源
  2. 抗并发, nginx处理请求是异步非阻塞的,而 apache则是阻塞型的,在高并发下 nginx能保持低资源低消耗高性能;官方測试能够支撑5万并发连接,实际生产环境中能跑到2-3万并发连接
  3. 配置文件非常简单,风格和程序一样進俗易懂
  4. 提供负载均衡、反向代理,支持 rewrite,支持gzip压缩
  5. 稳定性高,宕机概率微乎其微
  6. 开源,可免费使用

安装Nginx

来源于

https://www.cnblogs.com/taiyonghai/p/6728707.html

  1. 下载相关组件
[root@localhost src]# wget http://nginx.org/download/nginx-1.10.2.tar.gz
省略安装内容...
[root@localhost src]# wget http://www.openssl.org/source/openssl-fips-2.0.10.tar.gz
省略安装内容...
[root@localhost src]# wget http://zlib.net/zlib-1.2.11.tar.gz
省略安装内容...
[root@localhost src]# wget ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-8.40.tar.gz
省略安装内容...
  1. 安装Nginx及相关组件
openssl安装[root@localhost src]# tar zxvf openssl-fips-2.0.10.tar.gz
省略安装内容...
[root@localhost src]# cd openssl-fips-2.0.10
[root@localhost openssl-fips-2.0.10]# ./config && make && make install
省略安装内容...pcre安装[root@localhost src]# tar zxvf pcre-8.40.tar.gz
省略安装内容...
[root@localhost src]# cd pcre-8.40
[root@localhost pcre-8.40]# ./configure && make && make install
省略安装内容...zlib安装[root@localhost src]# tar zxvf zlib-1.2.11.tar.gz
省略安装内容...
[root@localhost src]# cd zlib-1.2.11
[root@localhost zlib-1.2.11]# ./configure && make && make install
省略安装内容...nginx安装[root@localhost src]# tar zxvf nginx-1.10.2.tar.gz
省略安装内容...
[root@localhost src]# cd nginx-1.10.2
[root@localhost nginx-1.10.2]# ./configure && make && make install
省略安装内容...
  1. Nginx基本操作
启动
[root@localhost ~]# /usr/local/nginx/sbin/nginx
停止/重启
[root@localhost ~]# /usr/local/nginx/sbin/nginx -s stop(quit、reload)
命令帮助
[root@localhost ~]# /usr/local/nginx/sbin/nginx -h
验证配置文件
[root@localhost ~]# /usr/local/nginx/sbin/nginx -t
配置文件
[root@localhost ~]# vim /usr/local/nginx/conf/nginx.conf启动nginx  使用`ps -ef | grep nginx`查看nginx进程是否启动启动成功 访问本地127.0.0.1  会出现Nginx的欢迎界面

uwsgi安装

通过pip安装

pip install uwsgi

uwsgi配置文件
在我们的项目目录中创建一个uwsgi.ini配置文件
我的配置文件如下

[uwsgi]
uid=root  #使用权限
pid=root
socket = 127.0.0.1:8008  #地址和端口号
http=0.0.0.0:8000   #http监听
harakiri = 300   #超时设置
pidfile=/opt/CowRestAPI/uwsgi.pid    #指定pid文件的位置,记录主进程的pid号
vacuum=true   #当服务器退出的时候自动清理环境,删除unix socket文件和pid文件
limit-post= 67108864  #限制HTTP请求体的大小
chair=/opt/CowRestAPI  #项目的目录
thunder-lock = true    #序列化接受的内容
master = true    #主进程
wsgi-file = /opt/CowRestAPI/api.py   #载入wsgi-file
callable = app  #callable指出的是具体执行.run方法的那个实体的名字,一般而言都是app=Flask(__name__)的,所以这里是app
processes = 1 #进程数量
threads = 4  #线程数量
daemonize = /opt/CowRestAPI/uwsgiserver.log   #使用进程在后台运行,并打印日志
touch-reload = /opt/CowRestAPI/api.py   #flask的启动文件
stats = 0.0.0.0:8080   #指定的地址开启状态服务
buffer-size = 32768     #设置用于uwsgi包解析的内部缓存区大小。默认是4k
在不使用Nginx的情况下
需要配置http=0.0.0.0:8000 (本地)
或者输入自己的公网IP加端口
在自己的项目目录下
使用`uwsgi uwsgi.ini`启动项目
然后访问自己的 ip + 端口 可以正常访问自己的项目
使用uwsgi+Nginx的情况下
需要配置socket不能使用http

Nginx的配置文件

在自己下载的nginx文件中会有一个nginx.conf
我的nginx配置文件如下
部分也有注释说明可以参考
nginx.conf

user root;   #使用指定用户
#user  nobody;
worker_processes  auto;   #使用的worker进程数#error_log  logs/error.log;  #错误日志问价
#error_log  logs/error.log  notice;  #日志级别
#error_log  logs/error.log  info;
#pid        logs/nginx.pid;   #存放进程pidevents {worker_connections  1024;  #每个worker最大连接数默认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;fastcgi_buffers 8 128k;send_timeout 60;server {listen  80;     #监听的端口 可以添加多个 listen   81#listen   81;server_name 47.93.37.167;    #自己的公网ip  本地直接localhost        Nginx可以监听多个域名client_max_body_size 10m;    #最大的报文,默认1mrewrite /baidu/(.*) https://baidu.com;    #重定向 访问/baidu/...就会跳转指定的url页面location / {include uwsgi_params;    #说明与uwsgi进行连接uwsgi_param UWSGI_CHDIR  /opt/CowRestAPI;  #项目目录uwsgi_param UWSGI_SCRIPT api:app;  #api为flask项目启动文件,app是run方法的那个实体的名字,一般而言都是app=Flask(__name__)的uwsgi_pass 127.0.0.1:8008; #此处的ip和端口需要和uwsgi配置文件中的socket一样,才能建立连接}location - /\secret\/(.*)$ {return 403;         #访问secret 返回403 隐藏}   }
}

如果访问出现nginx 504 Gateway Time-out的错误
一般看来, 这种情况可能是由于nginx默认的fastcgi进程响应的缓冲区太小造成的, 这将导致fastcgi进程被挂起, 如果你的fastcgi服务对这个挂起处理的不好, 那么最后就极有可能导致504 Gateway Time-out
  现在的网站, 尤其某些论坛有大量的回复和很多内容的, 一个页面甚至有几百K
  默认的fastcgi进程响应的缓冲区是8K, 我们可以设置大点
  在nginx.conf里, 加入:
  fastcgi_buffers 8 128k
  这表示设置fastcgi缓冲区为8×128k
  当然如果您在进行某一项即时的操作, 可能需要nginx的超时参数调大点, 例如设置成60秒:
  send_timeout 60;
  我只是调整了这两个参数, 结果就是没有再显示那个超时, 可以说效果不错
  如果还有此类问题可以参考以下链接

https://www.cnblogs.com/xiamidong/p/4105583.html

nginx的location配置详解

语法规则: location [=|~|~*|^~] /uri/ { … }
= 开头表示精确匹配
^~ 开头表示uri以某个常规字符串开头,理解为匹配 url路径即可。nginx不对url做编码,因此请求为/static/20%/aa,可以被规则^~ /static/ /aa匹配到(注意是空格)。
~ 开头表示区分大小写的正则匹配
~*  开头表示不区分大小写的正则匹配
!~和!~*分别为区分大小写不匹配及不区分大小写不匹配 的正则
/ 通用匹配,任何请求都会匹配到。
多个location配置的情况下匹配顺序为(参考资料而来,还未实际验证,试试就知道了,不必拘泥,仅供参考):
首先匹配 =,其次匹配^~, 其次是按文件中顺序的正则匹配,最后是交给 / 通用匹配。当有匹配成功时候,停止匹配,按当前匹配规则处理请求。

https://www.cnblogs.com/sign-ptk/p/6723048.html

反向代理

http {include       mime.types;default_type  application/octet-stream;#access_log  logs/access.log  main;sendfile        on;#tcp_nopush     on;#keepalive_timeout  0;keepalive_timeout  65;#gzip  on;fastcgi_buffers 8 128k;send_timeout 60;server {listen  80;     #监听的端口 可以添加多个 listen   81#listen   81;server_name localhost; location / {proxy_pass http://192.168.1.101:9000;  #反向代理#以下是一些反向代理的配置可删除proxy_redirect             off; #后端的Web服务器可以通过X-Forwarded-For获取用户真实IPproxy_set_header           Host $host; proxy_set_header           X-Real-IP $remote_addr; proxy_set_header           X-Forwarded-For $proxy_add_x_forwarded_for; client_max_body_size       10m; #允许客户端请求的最大单文件字节数client_body_buffer_size    128k; #缓冲区代理缓冲用户端请求的最大字节数proxy_connect_timeout      300; #nginx跟后端服务器连接超时时间(代理连接超时)proxy_send_timeout         300; #后端服务器数据回传时间(代理发送超时)proxy_read_timeout         300; #连接成功后,后端服务器响应时间(代理接收超时)proxy_buffer_size          4k; #设置代理服务器(nginx)保存用户头信息的缓冲区大小proxy_buffers              4 32k; #proxy_buffers缓冲区,网页平均在32k以下的话,这样设置proxy_busy_buffers_size    64k; #高负荷下缓冲大小(proxy_buffers*2)proxy_temp_file_write_size 64k; #设定缓存文件夹大小,大于这个值,将从upstream服务器传}}
}

Nginx负载均衡 反向代理

Nginx.conf 其中的设置

http {include       mime.types;default_type  application/octet-stream;#access_log  logs/access.log  main;sendfile        on;#tcp_nopush     on;#keepalive_timeout  0;keepalive_timeout  65;#gzip  on;fastcgi_buffers 8 128k;send_timeout 60;upstream nginx_test {#ip_hash      #只访问到了一台  保持session的一致性  server 192.168.1.101:9000 weight=1 max_fails=5 fail_timeout=20s;     #设置健康检查和超时时间  加上down 暂时不参与负载server 192.168.1.102:9000 weight=3;  #两台服务ip weight代表比重 越大访问次数越多}server {listen  80;     #监听的端口 可以添加多个 listen   81#listen   81;server_name localhost; rewrite /baidu/(.*) https://baidu.com;    #重定向 访问/baidu/...就会跳转指定的url页面location / {proxy_pass http://nginx_test;}}
}

Linux中 Nginx+uwsgi部署flask项目 Nginx负载均衡 反向代理相关推荐

  1. 使用 Nginx + Gunicorn 部署 Flask 项目

    使用 Nginx + Gunicorn 部署 Flask 项目 Flask Web 项目开发完成后,开发人员只是在开发环境运行,只有本地可以访问到项目.如果要让用户访问到项目,需要将项目部署到生产环境 ...

  2. nginx怎么部署php项目,nginx怎么正确部署前端项目

    目的: nginx部署打包成为dist的前端项目 (学习视频分享:php视频教程) 相关知识:docker 安装与使用 docker pull nginx docker run --restart=o ...

  3. 使用Nginx+uWSGI部署Django项目

    1.linux安装python3环境 参考链接:https://www.cnblogs.com/zzqit/p/10087680.html 2.安装uwsgi pip3 install uwsgiln ...

  4. Nginx安装/负载均衡/反向代理配置与调优

    [Nginx安装] Linux下直接使用包管理安装 sudo apt-get install nginx 使用whereis命令查看安装位置 whereis nginx #sbin下代表nginx可执 ...

  5. 架构之Nginx(负载均衡/反向代理)

    Nginx ("engine x") 是一个高性能的 HTTP 和 反向代理 服务器 ,也是一个 IMAP/POP3/SMTP 代理 服务器 . Nginx 是由 Igor Sys ...

  6. Nginx学习总结(10)——Nginx前后端分离将多个请求转发到多个Tomcat,负载均衡反向代理

    一.谈谈"渲染" 相信好多人都挺听过"渲染"这个词,但不清楚它是什么意思?前端开发以为这是后端的活儿,后端开发以为是前端的事儿,推着推着就不了了之.其实渲染很简 ...

  7. CENTOS7 使用 Nginx + Uwsgi 部署 Django 项目

    写在前面的话 最近总是见到有新学 Django 的朋友在部署自己的项目到 Linux 上面的时候运行不起来,所以就动手写了这篇博客. 对于不会搭建 Python 3 环境的朋友可以参考前面的博客[CE ...

  8. Ubuntu nginx+uwsgi部署Django项目

    前提条件:首先项目使用一下命令启动成功后,输入公网ip后可以启动成功 python manage.py runserver 0.0.0.0:80 一.阿里云配置安全组 添加8000端口 二.安装配置u ...

  9. centos7根据端口查进程_记录一次CentOs7下Nginx+WSGI部署Django项目(超详细)

    记录一次Django部署的文章,不是很熟悉Linux系统,踩了不少坑,本篇文章相当于是一个总结,我会在本文中详细介绍,部署单个Django项目和多个Django的方法,如读者有更好的方法,欢迎留言一起 ...

最新文章

  1. Redis消息通知系统的实现
  2. 浅谈悲催的“期末考试”
  3. Python入门笔记(17):错误、异常
  4. 7.Java中变量的隐式转换以及强类型转换
  5. Codeforces Round #578 (Div. 2)
  6. 关于半马尔可夫(semi-markov)的一个形象解释
  7. ubuntu修改固定ip
  8. Java进阶04 RTTI
  9. 产品经理如何洞察人性?
  10. IXWebHosting主机如何退款中文图解教程
  11. https提供安全的web通讯
  12. open jdk 证书 问题
  13. 常见视频高速接口分析MIPI,LVDS,RGB,HDMI
  14. 嵌入式Linux开发与单片机开发的区别
  15. pc端和移动端抓包工具
  16. Ipython安装错误集锦
  17. UNIX环境高级编程(第2版)- 第1~10章
  18. python聊天室设计_如何使用 Python 开发一个聊天室?
  19. 2022年,计算机er保研选计科还是电信?
  20. linux流控系统,Linux流量控制(TC)之表面

热门文章

  1. SPI FLASH 二线/四线模式
  2. 深入理解setstate
  3. tomcat启动失败的3种解决办法
  4. RNA二级结构在 siRNA设计中的应用
  5. 看楼房 | C++ | 栈
  6. MATLAB正月点灯笼老师课程笔记:第四课:使用MATLAB制作简单的动画效果
  7. 围绕科教兴国,强化人才建设写一篇1000字心得体会
  8. Redis+Caffeine两级缓存
  9. 不同职业的从业人员工资价位统计分布表
  10. 电流互感器同名端是什么意思