目录
一 基本概念
1. 什么是 nginx 和可以做什么事情
2.Nginx 作为 web 服务器
3. 正向代理
4. 反向代理
5. 负载均衡
6.动静分离
二 Ubuntu安装Nginx
三 Nginx的信号控制
四 Nginx的配置文件
第一部分:全局块
第二部分:events块
第三部分http和server块:
五 自己创建资源访问路径
1.创建自己的资源
2.配置nginx config文件
3.配置server配置文件
Nginx 是高性能的 HTTP 和反向代理的web服务器,处理高并发能力是十分强大的,能经受高负 载的考验,有报告表明能支持高达 50,000 个并发连接数。其特点是占有内存少,并发能力强,事实上nginx的并发能力确实在同类型的网页服务器中表现较好,中国大陆使用nginx网站用户有:百度、京东、新浪、网易、腾讯、淘宝等。
Nginx 可以作为静态页面的 web 服务器,同时还支持 CGI 协议的动态语言,比如 perl、php 等。但是不支持 java。Java 程序只能通过与 tomcat 配合完成。Nginx 专为性能优化而开发, 性能是其最重要的考量,实现上非常注重效率 ,能经受高负载的考验,有报告表明能支持高 达 50,000 个并发连接数。
Nginx 不仅可以做反向代理,实现负载均衡。还能用作正向代理来进行上网等功能。 正向代理:如果把局域网外的 Internet 想象成一个巨大的资源库,则局域网中的客户端要访 问 Internet,则需要通过代理服务器来访问,这种代理服务就称为正向代理。
简单一点:通过代理服务器来访问服务器的过程 就叫 正向代理。
需要在客户端配置代理服务器进行指定网站访问
反向代理,其实客户端对代理是无感知的,因为客户端不需要任何配置就可以访问。
我们只 需要将请求发送到反向代理服务器,由反向代理服务器去选择目标服务器获取数据后,在返 回给客户端,此时反向代理服务器和目标服务器对外就是一个服务器,暴露的是代理服务器 地址,隐藏了真实服务器 IP 地址。
增加服务器的数量,然后将请求分发到各个服务器上,将原先请求集中到单个服务器上的 情况改为将请求分发到多个服务器上,将负载分发到不同的服务器,也就是我们所说的负载均衡
客户端发送多个请求到服务器,服务器处理请求,有一些可能要与数据库进行交互,服 务器处理完毕后,再将结果返回给客户端。
这种架构模式对于早期的系统相对单一,并发请求相对较少的情况下是比较适合的,成 本也低。但是随着信息数量的不断增长,访问量和数据量的飞速增长,以及系统业务的复杂 度增加,这种架构会造成服务器相应客户端的请求日益缓慢,并发量特别大的时候,还容易 造成服务器直接崩溃。很明显这是由于服务器性能的瓶颈造成的问题,那么如何解决这种情 况呢?
我们首先想到的可能是升级服务器的配置,比如提高 CPU 执行频率,加大内存等提高机 器的物理性能来解决此问题,但是我们知道摩尔定律的日益失效,硬件的性能提升已经不能 满足日益提升的需求了。最明显的一个例子,天猫双十一当天,某个热销商品的瞬时访问量 是极其庞大的,那么类似上面的系统架构,将机器都增加到现有的顶级物理配置,都是不能 够满足需求的。那么怎么办呢?上面的分析我们去掉了增加服务器物理配置来解决问题的办法,也就是说纵向解决问题 的办法行不通了,那么横向增加服务器的数量呢?这时候集群的概念产生了,单个服务器解 决不了,我们增加服务器的数量,然后将请求分发到各个服务器上,将原先请求集中到单个服务器上的情况改为将请求分发到多个服务器上,将负载分发到不同的服务器,也就是我们 所说的负载均衡
为了加快网站的解析速度,可以把动态页面和静态页面由不同的服务器来解析,加快解析速 度。降低原来单个服务器的压力。
以上概念均转自如下链接的第一章nginx学习,看这一篇就够了:下载、安装。使用:正向代理、反向代理、负载均衡。常用命令和配置文件,很全_冯insist的博客-CSDN博客_windows查看nginx进程文章目录前言一、nginx简介1. 什么是 nginx 和可以做什么事情2.Nginx 作为 web 服务器3. 正向代理4. 反向代理5. 动静分离6.动静分离二、Nginx 的安装三、 Nginx 的常用命令和配置文件四、 Nginx 配置实例 1 反向代理五、 Nginx 配置实例 2 负载均衡六、 Nginx 配置实例 3 动静分离七、 Nginx 的高可用集群前言一、nginx简介...https://blog.csdn.net/qq_40036754/article/details/102463099?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522165103917916781435431599%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&request_id=165103917916781435431599&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~top_positive~default-1-102463099.142%5Ev9%5Econtrol,157%5Ev4%5Enew_style&utm_term=nginx&spm=1018.2226.3001.4187
1.使用root权限或者root授予的sudo命令。
2.使用apt-get安装nginx
apt-get install nginx
查看nginx安装是否成功
nginx -v
启动nginx
service nginx start
启动后,在网页重输入ip地址,即可看到nginx的欢迎页面。至此nginx安装成功
nginx文件安装完成之后的文件位置:
以上安装步骤采用ubuntu安装nginx_程序媛小雪的博客-CSDN博客_ubuntu安装nginxubuntu安装nginxhttps://blog.csdn.net/qq_23832313/article/details/83578836?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522165103911816782390523712%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&request_id=165103911816782390523712&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~sobaiduend~default-1-83578836.142%5Ev9%5Econtrol,157%5Ev4%5Enew_style&utm_term=unbuntu%E5%AE%89%E8%A3%85nginx&spm=1018.2226.3001.4187
在Nginx安装好后,我们可以去把重要的配置文件备份备份,防止到时改坏了,好恢复。
在Nginx中,如果要控制Nginx的动作,则要发送信号,告诉它干什么
在Nginx中的进程分为master(管理员访问)和worker(普通用户访问)
通过cmd命令我们可以在启动nginx后查询它的进程信息
ps -ef | grep nginx
可以看到分别有master进程和worker进程,master进程管理着worker进程
如果我们要操作Nginx的进程则需要通过master去操控其他的worker进程,而master必须要有管理员权限才能操作,然后给Nginx发送命令,master就会去控制其他的worker进行对应的操作。
启动Nginx
nginx
关闭Nginx
#立即关闭,包括master和worker
kill -TERM master进程ID
#正常关闭,首先worker停止接收新链接
#然后处理完后关闭master和worker
kill -QUIT master进程ID
更新Nginx重新读取配置文件
kill -HUP masterID
这个命令会去重新读取nginx的配置文件。
重新打开日志文件
kill -USR1 `more /run/nginx.pid`
所有worker不再接收处理新连接,处理完后自动关闭worker
kill -WINCH `more /run/nginx.pid`
USR2:在不重启服务器的前提下,平滑的更新到最新版本
当进行更新的时候,会将正在运行的nginx复制一份,然后进行更新,更新完毕后会发送QUIT命令给旧的master,最后新nginx就会代替旧nginx继续运行。
kill -USR2 masterID
检测nginx配置文件是否有语法错误
#如果使用-T会同时显示conf文件内容
nginx -t
Nginx启停
nginx -s [参数]
stop:立马停止
quit:正常停止
reopen:重新打开日志文件
reload:重新启动master并且读取新的配置文件
Nginx文件位置在/etc/nginx/nginx.conf中
worker_processes auto;
pid /run/nginx.pid;
include /etc/nginx/modules-enabled/*.conf;events {
worker_connections 768;
multi_accept on;
}http {
#Basic Settings
sendfile on;
tcp_nopush on;
tcp_nodelay on;
keepalive_timeout 65;
types_hash_max_size 2048;
server_tokens off;server_names_hash_bucket_size 64;
server_name_in_redirect off;include /etc/nginx/mime.types;
default_type application/octet-stream;
#SSL Settings
ssl_protocols TLSv1 TLSv1.1 TLSv1.2 TLSv1.3; Dropping SSLv3, ref: POODLE
ssl_prefer_server_ciphers on;
#Logging Settings
access_log /var/log/nginx/access.log;
error_log /var/log/nginx/error.log;
#Gzip Settings
gzip on;
gzip_vary on;
gzip_proxied any;
gzip_comp_level 6;
gzip_buffers 16 8k;
gzip_http_version 1.1;
gzip_types text/plain text/css application/json application/javascript text/xml application/xml a
pplication/xml+rss text/javascript;
#Virtual Host Configs
include /etc/nginx/conf.d/*.conf;
include /etc/nginx/sites-enabled/*;
}
mail {
See sample authentication script at:
http://wiki.nginx.org/ImapAuthenticateWithApachePhpScript
auth_http localhost/auth.php;
pop3_capabilities "TOP" "USER";
imap_capabilities "IMAP4rev1" "UIDPLUS";
server {
listen localhost:110;
protocol pop3;
proxy on;
}
server {
listen localhost:143;
protocol imap;
proxy on;
}
}
从配置文件开始到 events 块之间的内容,主要会设置一些影响nginx 服务器整体运行的配置指令,主要包括配 置运行 Nginx 服务器的用户(组)、允许生成的 worker process 数,进程 PID 存放路径、日志存放路径和类型以 及配置文件的引入等。
比如上面第一行配置的:
worker_processes auto;
这是 Nginx 服务器并发处理服务的关键配置,worker_processes 值越大,可以支持的并发处理量也越多,但是 会受到硬件、软件等设备的制约。
events {
worker_connections 1024;
}
events 块涉及的指令,主要影响 Nginx 服务器与用户的网络连接,常用的设置包括是否开启对多 work process 下的网络连接进行序列化,是否 允许同时接收多个网络连接,选取哪种事件驱动模型来处理连接请求,每个 word process 可以同时支持的最大连接数等。就如
上述例子就表示每个 work process 支持的最大连接数为 1024.
这部分的配置对 Nginx 的性能影响较大,在实际中应该灵活配置。
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;server {
listen 80;
server_name localhost;location / {
root html;
index index.html index.htm;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
}
这算是 Nginx 服务器配置中最频繁的部分,代理、缓存和日志定义等绝大多数功能和第三方模块的配置都在这里。
需要注意的是:http 块也可以包括 htt p全局块、server 块。
每个 http 块可以包括多个 server 块,而每个 server 块就相当于一个虚拟主机.
server中分配了主机名和监听端口,当对应的server被触发就会localtion块处理。
而每个 server 块也分为全局 server 块,以及可以同时包含多个 locaton 块。
localtion / {
内容
}
当请求与location后面的值匹配就会执行匹配的location。
同时从location指定的内资源里取出内容,然后返回给用户。
全局 server 块
最常见的配置是本虚拟机主机的监听配置和本虚拟主机的名称或IP配置。
location 块
一个 server 块可以配置多个 location 块。
这块的主要作用是基于 Nginx 服务器接收到的请求字符串(例如 server_name/uri-string),对虚拟主机名称 (也可以是IP 别名)之外的字符串(例如 前面的 /uri-string)进行匹配,对特定的请求进行处理。 地址定向、数据缓 存和应答控制等功能,还有许多第三方模块的配置也在这里进行。
error_page:
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
访问nginx不存在的资源的时候就会报错
当出现error_page中的错误码的时候,会将页面跳转到相应的页面,这里是跳转到50x.html页面。
如上,都是访问的nginx默认的资源路径,如果我们要配置自己的资源访问路径,我们要修改nginx配置文件.
首先在/home/www下面创建资源路径和资源文件.
同时要创建server的配置文件夹,命名为conf.d,方便我们到时存放server配置文件.
同时创建存放静态资源的文件夹myweb,将静态资源存分别存放到不同的文件夹.
#表示nginx工作时候对应的用户,我们是在/home/www下工作的所以写www
user www
#生成工作进程的个数
worker_processes auto;
#存放master pid的位置
pid /run/nginx.pid;
include /etc/nginx/modules-enabled/*.conf;events {
#设置nginx网络序列化
accept_mutex on;
#设置nginx的最大连接数
worker_connections 768;
#设置worker可以同时接收多个请求
multi_accept on;
}http {
#Basic Settings
include /etc/nginx/mime.types;
default_type application/octet-stream;
send file on;
keeplive_timeout 65;
#include去加载我们在www下面的server配置文件
#也可以写在下面的server块里面
include /home/www/conf.d/*.conf;
server{
#nginx监听80端口
listen 80;
server_name localhost;
location / {
root html;
index index.html index.htm;
}
}
}
在/home/www/conf.d下创建server1.conf
server{
#监听端口
listen 8081;
#主机名
server_name localhost;
#开启访问日志,指定位置
access_log /home/www/myweb/server1/logs/access.log;
#配置请求匹配路径,当路径匹配就去访问相应的资源
location /server1/location1{
#访问资源的路径
root /home/www/myweb;
#访问的静态资源
index index_sr1.html;
}
location /server1/location2{
root /home/www/myweb;
index index_sr2;
}
#当访问出现错误时,出现对应错误代码的时候跳转到错误页面
error_page 404 /404.html;
location = /404.html{
root /home/www/myweb;
index 404.html;
}
}
配置完后,重新加载nginx配置文件
nginx -s reload
4.进行测试
打开游览器,输入对应url就可以访问到相对应请求的资源文件了.
这里需要注意的是,root 路径 和alias 路径的区别。
root的处理结果是:root路径+location路径
alias的处理结果是:使用alias路径替换location路径
alias是一个目录的别名定义,root是最上层目录的含义。
如果location是以/结尾,则alias也必须以/结尾。