本篇目录
1. nginx是什么?
2. nginx有什么用?
3. nginx怎么用?
4. nginx使用过程中的注意事项?
5. 对于nginx使用的一些个人理解
1. nginx是什么?
nginx是一款高性能的http和反向代理服务器;
它是一款开源、低耗、并发能力特别强的代理服务器,在高并发型Web应用中使用广泛;
具有关测试显示,nginx可以同时支持高达50000个并发连接数的响应;
2. nginx有什么用?
nginx常用的功能有:反向代理、负载均衡、动静分离;
2.1 反向代理
在进行反向代理理解之前,先对正向代理产生理解,会有更好的过度作用;
正向代理:当我们访问外国网站时,速度常常会很慢。这个时候我们可以在自己与国外服务器之间选择一台代理服务器进而加快自己的访问速度;
在选择代理服务器时,用户需要自己手动在浏览器中进行一些配置。这个时候我们可以理解为正向代理的过程用户是有感知的;
反向代理:对于反向代理的理解,我们可以依托正向代理的例子。此时我们可以把nginx作为上述正向代理中的那台代理服务器。但是好处在于nginx是开发人员部署的,不需要用户手动在浏览器中进行配置;
此时,当我们再次访问外国网站时可以不用进行任何配置就可以加快访问速度。可以理解为这个过程用户是无感知的;
通常,反向代理和负载均衡是相辅相成的,比如说,我们在浏览器地址栏中输入了:https://47.90.78.128:9000;
通常我们会认为这个就是Web应用部署的服务器IP和对应端口号,但是使用了nginx之后,也许这个地址+端口号就不再是真实的Web应用部署的服务器IP和对应端口号了;
但它常常是nginx所监听的IP地址+端口号,当我们在浏览器中输入这段URL后,nginx会自动监听到这个请求然后进行服务的转发;
以上我们默认Web应用部署的服务器只有一台,所以可以直接转发,但是当我们有10台 20台服务器之后就不是这么简单了,这个时候就会使用到nginx的负载均衡功能;
所以说在使用反向代理+负载均衡进行结合的时候,开发者给用户看到的只是一个nginx的URL(冰山一角),而nginx之后也许是一个服务器的集群(而且它们通常是放在防火墙后面的,这样安全性也会大大增加);
开发者在这个集群中干任何事情用户都是无感知的。同时nginx也支持热部署和7X24不间断运行,可以连续几个月一直干活。几乎不需要维护;
2.2 负载均衡
我们接着上面的节点继续理解,当我们有20甚至30台之后,我们如何进行请求的响应呢?
此时就需要应用nginx的负载均衡技术,也就是说当我们继续在浏览器中输入https://47.90.78.128:9000这个URL后,nginx会进行负载均衡;
把这个请求按照一定的规则转发到对应的Web应用部署服务器上去,但是这个规则不能是随意的,因为在服务器之间,session是不能共享的;
如果出现了第一次转发到1号,第二次转发到5号服务器上这种情况就会出现很大的问题;
这次nginx官方给出了轮询、加权轮询、IPHASH这几种规则;
轮询:nginx会做到尽最大可能的均匀转发。平均下来就是每台服务器响应的次数是一致的;
加权轮询:如果5号服务器硬件比较强势,我们可以让它多干一些活,利用weight标签就可以给5号服务器增加一些权重;
IPHASH:nginx会根据客户端请求的IP地址进行一个换算,然后利用换算结果映射到对应的服务器上去,这样也可以解决session共享问题,因为IP地址最基本也是在一段时间内是固定的;
2.3 动静分离
在Web应用中,会分为静态资源和动态资源。此处我们做一个简单理解,我们把需要访问数据库才可以得到的理解为动态,其他都是静态;
常用的静态有css js image。我们可以把项目中的静态资源和动态资源进行分开部署。当请求静态资源时nginx会自动转发到静态资源服务器中去;
其中有一个很重要的点是nginx可以设置这些个静态资源的缓存时间,这样当出现静态资源量大且用户二次访问的时候,可以提高很大一部分效率;
3. nginx怎么用?
在nginx所有功能点的使用中,只需要在文件中进行配置就可以完成;
nginx的用法可以分为nginx安装、nginx配置这两个部分来说;
3.1 nginx的安装
因为nginx是服务器端应用,所以通常是在linux操作系统上进行安装的,但是它也有windows版本,此处我们只进行linux上的安装;
yum安装:/qq_42815754/article/details/82980326?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522163748253516780274197010%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&request_id=163748253516780274197010&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~top_positive~default-1-82980326.first_rank_v2_pc_rank_v29&utm_term=nginx%E5%AE%89%E8%A3%85&spm=1018.2226.3001.4187
源码安装:/qq_33454884/article/details/89212702?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522163748253516780274197010%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&request_id=163748253516780274197010&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~top_positive~default-2-89212702.first_rank_v2_pc_rank_v29&utm_term=nginx%E5%AE%89%E8%A3%85&spm=1018.2226.3001.4187
nginx安装完成之后就是使用了,接下来需要学习的是nginx的常用命令;
3.2 nginx的配置
3.2.1 nginx的常用命令
因为是在linux上使用,所以这里我们也只介绍linux上的命令;
以下这些命令都需要在nginx安装目录下的sbin中使用;
启动:./nginx
正常退出:./nginx -s quit(它会将nginx进程一个一个的关闭掉,效率低)
强制关闭:./nginx -s stop(一下子干掉所有nginx进程,效率高)
重新加载配置文件:./nginx -s reload
通常情况下的使用策略是:改动文件 -》 ./nginx -》 ./nginx -s stop -》 改动。形成这样的循环;
因为几乎所有的操作都是对于这个配置文件的改动,所以我们一定理解它配置文件的结构;
3.2.2 的结构
worker_processes 1; # 对,你并没有看错。全局块没有被花括号包含;
events {
}
http {
server {
location / {
}
location = {
}
}
server {
location / {
}
location = {
}
}
}
总体来说,nginx的配置文件核心部分就是长这个样子。它分为三部分,分别是:全局块、events块、http块;
全局块:这里面通常会配置日志文件的存放位置,以及用户组和主进程数;
events块:这里通常配置的是网络连接数。也就是指每一个master(主进程)可以承载多少网络连接数;
http块:这里面配置最多的就是反向代理的内容。其中一个http块可以包含多个server块,而一个server块又可以包含多个location块;
通常情况下,我们改动的都是的http块中的内容;
3.2.3 反向代理使用实例
# 这里指定了nginx主进程数。如果为auto,就由nginx自身来匹配个数。如果特别想指定个数,那最好和服务器CPU数保持一致(但官方推荐auto);
worker_processes auto;
pid /usr/local/nginx/logs/;
events {
# 这里限定了nginx的工作模式为epoll(centos中最高效的方式);
use epoll;
# 这里指定了nginx每个主进程的最大网络连接数;
worker_connections 65536;
}
http {
include ;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
# 配置HTTPS请求;
server {
# 监听的端口号;
listen 8445 ssl;
# 监听的IP地址;
server_name 47.110.35.243;
# 配置SSL证书的路径;
ssl_certificate /usr/local/nginx/cert/;
ssl_certificate_key /usr/local/nginx/cert/;
ssl_session_cache shared:SSL:1m;
ssl_session_timeout 5m;
ssl_ciphers HIGH:!aNULL:!MD5;
ssl_prefer_server_ciphers on;
# 反向代理;
location / {
proxy_pass https://172.16.240.53:18445;
}
# 限定状态码指向页面(这里指向的页面,默认都在nginx安装目录下的html中存储着);
error_page 503 404 /;
location = / {
root html;
}
}
# 通过以上的HTTPS配置可以达到的目标是,当我们访问https://47.110.35.243:8445时,nginx会监听到此次的请求;
# 然后把这个请求转发到真正的请求路径中去,也就是指https://172.16.240.53:18445;
# 配置HTTP请求;
server {
listen 8444;
server_name 47.110.35.243;
# 反向代理;
location / {
proxy_pass http://13.48.46.96:8445;
}
}
}
# 负载均衡和动静分离属于进阶篇的内容。但是也都是在中进行一些配置。通过这里的分析,肯定可以自己上手进行搜索解决的;
4. nginx使用过程中的注意事项?
4.1 改完配置文件一定要关闭 重启nginx,否则结果会很意外;
4.2 每一项配置后面都要加分号,这点很重要;
5. 对于nginx使用的一些个人理解
5.1 针对nginx的基本使用,我认为只有两个步骤,安装和改;