nginx部署简单(nginx部署后端)
nginx部署后端
nginx是一种web服务器反向代理。
nginx本身既可以代理前端服务,也可以代理后端服务。狭义上讲,nginx不属于前端,我们理解的前端是指用户可以看到可以操作的入口。比如网页,手机,APP等。但是nginx也不属于后端,因为后端是指实现和提供服务的服务器端代码及其相关服务。
nginx 部署
vue部署用nginx,c#的一般用iis
nginx部署后端win
Linux、FreeBSD操作系统都允许添加IP别名。IP别名即:可以在一块物理网卡上绑定多个IP
地址。这样就能够在使用单一网卡的同一个服务器上运行多个基于IP的虚拟主机。设置iP
别名也非常容易,只须配置系统上的网络接口,让它监听额外的lP地址。在Linux系统上,可以使用标准的网络配置工具(比如ifconfig和route)添加IP别名,这样都是没有任何问题的,你可以借鉴!
nginx部署web应用
Python Web 程序的部署方案
综合而言, 高性能的Python web站点部署方式首推 nginx + uwsgi
apache + mod_wsgi 是简单稳定但性能一般的方式
API服务器 可以直接使用tornado或者gevent
mod_python
非常原始的cgi模式部署python已经没有什么好介绍了。对于不太追求性能的管理系统和网站来说,使用 Apache 部署是一个不错的选择。较早的时候,使用 mode_python 部署python的web应用十分流行,在Django 0.96 的时候官方文档甚至推荐这种方式。
它将Python解释器嵌入到Apache server,以提供一个访问Apache server内部的接口。mod_python 在现在看来性能是不佳的,每一个http请求 mod_python 都会由一个进程初始化python解释器、载入代码、执行、然后销毁进程。
mod_wsgi
如果非要用Apache来部署python应用,mod_wsgi是一个更好的选择。WSGI 全称是 Web Server Gateway Interface ,由 PEP-333 定义。 基本上所有的python web框架都实现了wsgi接口,用mod_wsgi 能部署任何实现了wsgi的框架。实际上,不需要任何框架也可以用mod_wsgi 部署python程序。使用mod_wsgi的daemon模式,python程序会常驻内存,不会有很大的初始化和销毁进程方面的开销,所以性能是好于mod_python的。综合来说,使用Apache部署python web程序,推荐使用mod_wsgi的daemon模式。
Fastcgi
先说观点:不建议用fastcgi的方式部署Python web。
前几年由于lighttpd风头正劲和豆瓣的成功案例,fastcgi是一种很流行的部署方式。fastcgi与具体语言无关,也与web服务器无关。是一种通用的部署方式。fastcgi是对于cgi的增强,CGI程序运行在独立的进程中,并对每个Web请求建立一个进程。面对大量请求,进程的大量建立和消亡使操作系统性能大大下降。
与为每个请求创建一个新的进程不同,FastCGI使用持续的进程来处理一连串的请求。这些进程由FastCGI服务器管理,而不是web服务器。 当进来一个请求时,web服务器把环境变量和这个页面请求通过一个socket比如FastCGI进程与web服务器都位于本地)或者一个TCP connection(FastCGI进程在远端的server farm)传递给FastCGI进程。
主流的web服务器,Apache,lighttpd,nginx 都支持fastcgi,在几年前,lighttpd的mod_fcgi模块性能强劲,lighttpd+fastcgi十分流行。无论是python,ruby还是php,都有大量的站点使用这种方式部署。由于nginx的崛起,现在很少有人使用lighttpd了。
fastcgi 并不是专门为python设计,并不是所有的python框架天然的支持fastcgi,通常需要flup这样的容器来配适。flup由python编写,和专门的c实现的wsgi容器比起来性能显得相当不堪。fastcgi的稳定性对于新兴的wsgi容器来说也有差距。无论从哪个方面来看,部署python web程序,fastcgi 都已经是过去式。
uwsgi
前几年nginx还未内置uwsgi模块的时候,部署uwsgi还是一件挺麻烦的事情。随着能够在nginx中直接使用uwsgi模块,uwsgi已经是最可靠,最方便的高性能python web程序的部署方式了。
在1U的四核XEON服务器上,一个简单的wsgi handler甚至能用AB压到8000以上的qps,这已经是完爆tornado,接近gevent的性能了。 同时,uwsgi的稳定性极好。之前我们有个每天500w-1000w动态请求的站点使用uwsgi部署非常稳定,在一个渣HP 1U 服务器上,基本不用管它。
上面提到的部署方式都是相对于web网站的方式,在移动互联网的时代,我们需要的是高性能的API服务,上面这些都是过时的东西。
tornado
tornado 号称高性能,如果拿他写网站,其实一般般,只不过跟uwsgi加一些简单框架差不多而已。它真正的作用,是用来写API服务器和长连接的服务器。
由于tornado能够直接处理http请求,很多人直接拿他来裸奔直接提供服务。这种方式是不可取的,单线程的tornado只能利用cpu的一个核心,并且一旦阻塞直接就废了。通常情况下,由supervisor启动多个tornado进程,通过nginx进行反向代理负载均衡。nginx 1.14 以后的版本反向代理支持长连接,配合tornado的comet效果很好。
tornado还有一些比较奇葩的用法,比如用来做wsgi容器之类的。
gevent
gevent是一个神器,能做的事情很多。在web方面,处理http请求,用起来其实跟tornado差不多,但是要简陋很多,cookie之类的都没有。用gevent写的一些API服务,部署方式还是类似tornado,用supervisor管理多个守护进程,通过nginx做负载均衡。 同样的它的奇葩用法也和tornado一样,可以当wsgi容器用。
nginx部署后端服务
其实属于服务端,但是前后端都会用到
nginx后端配置
以vue框架为例,在nginx.conf中监听80或443端口的server的路由配置设置为:
location ^~ /api { # url如/api/v1.0/user/info等,通过uwsgi转发到django后端项目中处理
include /etc/nginx/uwsgi_params;
uwsgi_pass 127.0.0.1:8077;
include /etc/nginx/mime.types;
}
location ^~ /static { # 后端的资源文件夹为static,前端请求后端项目包内的静态文件
root /root/backend_end_project/static/;
}
location ^~ /admin { # django的后台管理页面通过uwsgi转交给django处理
include /etc/nginx/uwsgi_params;
uwsgi_pass 127.0.0.1:8077;
include /etc/nginx/mime.types;
}
location ^~ /assets { # 前端的资源文件夹为assets,前端请求前端项目包内的静态文件
root /root/front_end_project/dist;
}
location / { # 表示其它路径都交给前端项目根目录下的index.html处理
root /root/front_end_project;
try_files $uri /index.html;
}
nginx配置后端服务器
Nginx是一款常用的高性能Web服务器,其配置文件主要由模块指令和上下文组成,可以通过配置文件实现反向代理、负载均衡、缓存等功能。下面是nginx配置的一些详解:
1.server:server指令用于配置虚拟主机,可以在一个Nginx服务器中配置多个虚拟主机,每个虚拟主机有自己的配置。
2.location:location指令用于配置URL的匹配规则,可以匹配URI、文件扩展名等,可以通过配置不同的location实现反向代理和缓存等功能。
3.upstream:upstream指令用于配置反向代理的后端服务器,可以配置多个服务器进行负载均衡,支持不同的负载均衡算法。
4.proxy_pass:proxy_pass指令用于配置反向代理的转发规则,可以将请求转发到指定的后端服务器。
5.cache:cache指令用于配置缓存规则,可以通过配置缓存来提高Web服务器的性能。
6.ssl:ssl指令用于配置SSL协议,可以实现HTTPS的安全通信。
除了以上指令外,还有许多其他的Nginx指令,例如gzip、log_format、rewrite等,可以根据具体需求进行配置。总的来说,Nginx的配置相对简单,但具有很高的灵活性和可扩展性,可以根据不同的场景进行灵活配置。
nginx部署后端项目
nginx upstream是一款常用的高性能Web服务器,其配置文件主要由模块指令和上下文组成,可以通过配置文件实现反向代理、负载均衡、缓存等功能。下面是nginx配置的一些详解:
1.server:server指令用于配置虚拟主机,可以在一个Nginx服务器中配置多个虚拟主机,每个虚拟主机有自己的配置。
2.location:location指令用于配置URL的匹配规则,可以匹配URI、文件扩展名等,可以通过配置不同的location实现反向代理和缓存等功能。
3.upstream:upstream指令用于配置反向代理的后端服务器,可以配置多个服务器进行负载均衡,支持不同的负载均衡算法。
4.proxy_pass:proxy_pass指令用于配置反向代理的转发规则,可以将请求转发到指定的后端服务器。
5.cache:cache指令用于配置缓存规则,可以通过配置缓存来提高Web服务器的性能。
6.ssl:ssl指令用于配置SSL协议,可以实现HTTPS的安全通信。
除了以上指令外,还有许多其他的Nginx指令,例如gzip、log_format、rewrite等,可以根据具体需求进行配置。总的来说,Nginx的配置相对简单,但具有很高的灵活性和可扩展性,可以根据不同的场景进行灵活配置。
nginx 后端
Nginx和Apache都是常见的Web服务器,它们的主要区别如下:1. 处理并发连接的方式不同。Apache是同步的多进程模型,一个连接对应一个进程,而Nginx是异步的,多个连接(比如万级别)可以对应一个进程。
2. 静态文件处理性能不同。Nginx处理静态文件很好,静态处理性能比Apache高三倍以上。
3. 配置方式不同。Nginx的设计高度模块化,编写模块相对简单,配置文件简洁,易于维护。
4. 动态请求处理方式不同。Apache超稳定,对PHP支持比较简单,Nginx需要配合其他后端用,处理动态请求有优势。
综合来看,Nginx更适用于高并发、大规模的Web应用,而Apache则更适用于小型应用和简单动态页面。
nginx部署前端
nginx访问日志默认为开启状态,日志位于nginx安装目录下的logs/access.log日志配置指令如下:access_logpath[format[buffer=size][gzip[=level]][flush=time][if=condition]];access_logoff;第一行是启用日志第二行是关闭日志启用日志的必选参数为path表示日志路径
nginx 部署django
使用python manage.py runserver的方式启动,这样升级代码Django会自动重新加载,不用手工重启。nginx配置成proxy_pass http://127.0.0.1:8000就行。
本网站文章仅供交流学习 ,不作为商用, 版权归属原作者,部分文章推送时未能及时与原作者取得联系,若来源标注错误或侵犯到您的权益烦请告知,我们将立即删除.