linux:nginx
nginx介绍
一个高性能的http服务器/反向代理服务器及电子邮件代理服务器
nginx 大致有三大功能(静态web服务器、反向代理、负载均衡)
nginx一般同时做为静态web服务器和反向代理服务器,做为web服务器访问静态文件图片、css、js、html等文件;做为反向代理服务器把请求发给后端业务处理服务,如果有多个后端处理节点,会配置负载均衡功能。
排名:链接
Nginx有多种版本,例如:Nginx plus 和 Openresty,这些都是集成了其他的插件的的Nginx版本。
源码包安装
下载
下载地址:链接
在服务器端下载:wget 地址
将nginx下载到 /usr/local/src:
wget http://nginx.org/download/nginx-1.19.0.tar.gz
查看:
解压
tar -zxvf nginx-1.19.0.tar.gz
进入解压目录查看:
配置
./configure --prefix=/usr/local/nginx
出错:没有PCRE库
解决方法:直接yum安装pcre-devel
yum install pcre-level
安装完成:
再次尝试:
./configure --prefix=/usr/local/nginx --with-pcre
再次报错:没有zlib库
解决方法:直接yum安装zlib库,并将zlib库下载后解压
yum install zlib-devel
安装完成:
下载zlib库并解压:
wget http://www.zlib.net/zlib-1.2.11.tar.gz
解压后查看:
tar -zxvf zlib-1.2.11.tar.gz
再次尝试:
./configure --prefix=/usr/local/nginx --with-pcre --with-zlib=/usr/local/src/zlib-1.2.11
编译
make
安装
make install
安装完成的目录:
改端口
运行
由于nginx也占用端口8080,故先停止Apache,再运行nginx:
nginx启动:
/usr/local/nginx/sbin/nginx
nginx重启:
/usr/local/nginx/sbin/nginx -s reload
nginx关闭:
查看端口:
netstat -tnlp
kill该进程:
kill 17005
yum安装
下载
1、在 /etc/yum.repos.d/
下创建 nginx.repo
文件
vi /etc/yum.repos.d/nginx.repo
2、按 “i” 切换至编辑模式,写入以下内容
[nginx]
name = nginx repo
baseurl = https://nginx.org/packages/mainline/centos/7/$basearch/
gpgcheck = 0
enabled = 1
3、按 “Esc”,输入 “:x”,保存文件并返回
安装
yum install -y nginx
编辑
1、打开 nginx.conf
文件
vim /etc/nginx/nginx.conf
2、按 “i” 切换至编辑模式,编辑 nginx.conf
文件
3、找到 server{...}
,并将 server
大括号中相应的配置信息替换为如下内容。用于取消对 IPv6 地址的监听,同时配置 Nginx,实现与 PHP 的联动。
server {
listen 80;
root /usr/share/nginx/html;
server_name localhost;
#charset koi8-r;
#access_log /var/log/nginx/log/host.access.log main;
#
location / {
index index.php index.html index.htm;
}
#error_page 404 /404.html;
#redirect server error pages to the static page /50x.html
#
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
#pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
#
location ~ .php$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}
若 nginx.conf
文件中未找到 server{...}
,请在 include /etc/nginx/conf.d/*conf;
上方添加以上的 server{...}
配置内容
按 “Esc”,输入 “:x”,保存文件并返回
启动
systemctl start nginx
设置为开机自启动
systemctl enable nginx
测试
http://云服务器实例的公网 IP
卸载
yum remove nginx
查看nginx是否还存在:
which nginx
配置文件解读
参考:链接
代理
参考:链接
反向代理
nginx反向代理的指令不需要新增额外的模块,默认自带proxy_pass指令,只需要修改配置文件就可以实现反向代理。
反向代理服务器是一种代理服务器,用于管理从外部网络到内部网络的连接或任何特定请求。它保护、路由和管理从外部网络到内部网络、Web服务器或专用网络的流量。
外部机器通过网关访问网关后面服务器上的内容,网关起到了反向代理的功能,我们平时通过浏览器访问远程的web服务器大都是这样实现的。
外网客户机:我们平时打开浏览器输入网址访问www.nginx.cn的场景中,我们的笔记本就可以理解为一个外网客户机。
nginx反向代理服务:浏览器输入网址并回车后,会发起一个http请求给nginx(反向代理服务器),这个请求如果是访问静态文件,那么nginx作为web服务器直接返回请求的内容,如果是访问的后台服务逻辑,那么nginx把请求转发给后端的服务处理。
内网web服务:后端的服务可以是很多种类型,LNMP环境下的php-fpm进程,Java环境下的tomcat、jetty等容器,通过程序逻辑处理http请求,生成html页面或者json串返回给客户端。对于小型应用,后端服务可以和nginx部署在同一台机器上。
反向代理的好处
主要就是为了配合upstream实现负载均衡
1、增加了安全性,客户端不能直接访问后端服务,中间多了一个屏障
2、提升了性能,通过异步非阻塞的方式把请求传给后端,提升了并发能力
3、利用缓存、压缩响应提高响应速度
配置
nginx 反向代理不需要编译额外的模块,默认自带的proxy_pass和fastcgi_pass指令,通过在location配置块中增加指令即可实现
以www.nginx.cn为例,这个网站用的wordpress程序,wordpress是php语言编写,那么需要通过php运行环境,可以选择apache的php扩展或者php-fpm环境,主流的选择是php-fpm,php-fpm设置为Unix socket模式或者ip:端口模式 。
Unix socket后端服务配置
server {
listen 80;
server_name www.nginx.cn nginx.cn; location /app {
fastcgi_pass unix:/tmp/php-cgi.sock;
}
}
ip端口后端服务配置
server {
listen 80;
server_name www.nginx.cn nginx.cn; location /app {
proxy_pass http://127.0.0.1:8080;
}
}
proxy_pass和fastcgi_pass区别
对于上面介绍的两种情况下proxy_pass和fastcgi_pass可以互相替代使用,不过两者还是有区别的,从名字我们就可以看出来,fastcgi_pass是用来反向代理fastcgi协议,proxy_pass可以代理包括fastcgi协议在内的其它协议。
例如镜像一个网站,这种情况下就需要proxy_pass:
location /{
proxy_pass http://www.baidu.com;
}
正向代理
参考:链接
局域网中的用户通过网关做代理访问外部的网络。【代理上网】
配置
user www;
worker_processes 1;
error_log /var/log/nginx/error.log debug; events {
use epoll;
worker_connections 1024;
} http {
resolver 8.8.8.8; // 增加dns解析
server { // 增加没有server_name的server
listen 8088;
location / {
proxy_pass http://$http_host$request_uri; // proxy_pass指令
}
}
}
nginx实现代理上网,有三个关键点必须注意,其余的配置跟普通的nginx一样
1.增加dns解析resolver
2.增加无server_name名的server
3.proxy_pass指令
具体配置:
1、修改配置文件,如下所示:
resolver 8.8.8.8;
server {
listen 8088;
location / {
proxy_pass http://$http_host$request_uri;
}
}
2、重启nginx服务
3、设置ie代理
4、可以使用代理上网
可以访问http://ip.quancha.cn检测代理是否生效
使用nginx代理上网后:
使用nginx代理上网前:
负载均衡
参考:链接
负载均衡是扩展应用程序并提高其性能和冗余的绝佳方法。Nginx是一种流行的Web服务器软件,可以配置为简单但功能强大的负载均衡器,以提高服务器资源的可用性和效率。在负载均衡配置中,nginx充当在多个单独服务器上工作的分布式Web应用程序的单个入口点。
配置
参考:链接
启用HTTPS
安装证书
参考:链接
健康检查
为了知道哪些服务器可用,nginx的反向代理实现包括被动服务器健康检查。如果服务器无法响应请求或回复错误,nginx会检测到服务失败,并将尝试一段时间内避免转发请求到该服务器。
通过参数max_fails 表示为定义特定时间段内连续不成功的连接尝试次数。默认情况下,如果未指定max_fails,则将此值设置为1.(可选)将max_fails设置为0将禁用对该服务器的运行状况检查。
如果将max_fails设置为大于1的值,则后续失败必须在特定时间范围内发生,以便无法计数。此时间范围由参数fail_timeout指定,该参数还定义服务器应被视为失败的时间。默认情况下,fail_timeout设置为10秒。
在服务器标记失败并且fail_timeout设置的时间已过后,nginx将开始使用客户端请求正常探测服务器。如果探测返回成功,则服务器再次标记为可用并且正常包含在负载平衡中
upstream backend {
server 10.1.0.101 weight=5;
server 10.1.0.102 max_fails=3 fail_timeout=30s;
server 10.1.0.103;
}
使用运行状况检查可以根据需要通过启动或关闭主机来使服务器后端适应当前需求。在高流量期间启动其他服务器可以在新资源自动供负载均衡器使用时轻松提高应用程序性能。
linux:nginx的更多相关文章
- Linux:nginx服务器的搭建
搭建nginx网站服务器 安装nginx yum install nginx 启动服务 安装完成后启动服务 systemctl start nginx 通过浏览器测试 地址栏输入localhost 不 ...
- Linux:nginx负载均衡
前提:web服务器框架已搭建好lamp/lnmp),已配置好虚拟主机名(这个的配置在上几章中有写). nginx做负载均衡主要的模块是upstream. 1.在新的机器上安装nginx 创建用户ngi ...
- Linux:nginx基础
一..简单介绍 nginx时开源的www服务器,只能解析静态的网页(html,js,css等),具有静态小文件高并发特性. 可做web服务器.负载均衡.web cache(web缓存) 优点: 1.高 ...
- Linux学习笔记:nginx基础
nginx [engine x] is an HTTP and reverse proxy server, a mail proxy server, and a generic TCP/UDP pro ...
- Linux实战教学笔记30:Nginx反向代理与负载均衡应用实践
1.1 集群简介 简单地说,集群就是指一组(若干个)相互独立的计算机,利用高速通信网络组成的一个较大的计算机服务系统,每个集群节点(即集群中的每台计算机)都是运行各自服务的独立服务器.这些服务器之间可 ...
- Linux实战教学笔记27:Nginx详细讲解
前言:nginx的特点 本节主要对Nginx Web服务软件进行介绍,涉及Nginx的基础,特性,配置部署,优化,以及企业中的日常运维管理和应用.作为HTTP服务软件的后起之秀,Nginx与它的老大哥 ...
- 实现简单网页rtmp直播:nginx+ckplayer+linux
一.安装nginx 安装带有rtmp模块的nginx服务器(其它支持rtmp协议的流媒体服务器像easydarwin.srs等+Apache等web服务器也可以),此处使用nginx服务器,简单方便. ...
- linux shell:nginx日志切割脚本
需求原因:nginx不具备日志切割功能,日志量较大,方便分析. 实现目的:完成nginx日志切割,并根据时间命名 简要命令: mv /usr/local/tengine/logs/access.l ...
- 第一次项目上Linux服务器(六:Nginx安装及相关命令(转))
1.下载nginx 方法一 wget http://nginx.org/download/nginx-1.11.6.tar.gz 方法二 http://nginx.org/en/download.ht ...
随机推荐
- spring乱码处理
在web.xml添加post乱码filter:CharacterEncodingFilter 2). 对于get请求中文参数出现乱码解决方法有两个: a. 修改tomcat配置文件添加编码与工程编码一 ...
- new 的原理和实现
new 运算符内部做了如下四个操作: 创建一个空的简单 JavaScript 对象(即{}): 链接新对象(即设置该新对象的构造函数)到函数对象: 将新创建的对象作为 this 的上下文: 如果该函数 ...
- ACID隔离性
数据库ACID 一致性 原子性 隔离性 持久性 隔离性: 1.读未提交 2.读已提交 3.可重复读 4.串行 读未提交:容易引起脏读 读已提交:容易引起幻读(前后读到的行数不一致) 场景: A事务 ...
- 第十二章节 BJROBOT 摄像头寻线 【ROS全开源阿克曼转向智能网联无人驾驶车】
关于摄像头:普通摄像头, USB 免驱摄像头都可以使用. 1.如下图所示,用红色胶布在地板上贴一条线,小车摆放在线的一头处,让线在小车的中间位置,摄像头角度往下调整倾斜一点,好让摄像头识别到红线.注意 ...
- ElasticSearch--一、使用场景以及对应软件配置安装
废话不多说,直接来硬的!我在使用的时候使用的是mysql数据库. 一.ElasticSearch概念和使用场景 1.当我们需要搜索海量数据的时候,就可能会用到.以下使用的场景有哪些呢? 搜索海量数据 ...
- hive 将hive表数据查询出来转为json对象和json数组输出
一.将hive表数据查询出来转为json对象输出 1.将查询出来的数据转为一行一行,并指定分割符的数据 2.使用UDF函数,将每一行数据作为string传入UDF函数中转换为json再返回 1.准备数 ...
- SpringCloud 源码系列(6)—— 声明式服务调用 Feign
SpringCloud 源码系列(1)-- 注册中心 Eureka(上) SpringCloud 源码系列(2)-- 注册中心 Eureka(中) SpringCloud 源码系列(3)-- 注册中心 ...
- linux系统重启网卡后网络不通(NetworkManager篇)
一.故障现象 RHEL7.6系统,使用nmcli绑定双网卡后,再使用以下命令重启network服务后主机网络异常,导致无法通过ssh远程登录系统. # systemctl restart n ...
- Win Task 任务管理器 批量杀进程方法
Example Kill All Chrome & Chrome Driver taskkill /IM chromedriver.exe /F taskkill /IM chrome.exe ...
- vim_command
vi 打开vi空白面板 vi filename 以编辑模式打开文件.如果参数为已有文件,在vi中打开:如果参数为新文件名,在vi退出时提示用户保存编辑内容 vi -R filename 以只读模式打开 ...