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 ...
随机推荐
- js表单简单验证(手机号邮箱)
1 <%@ page language="java" contentType="text/html; charset=UTF-8" 2 pageEncod ...
- YourBatman 2020年感悟关键词:科比、裁员、管理层、活着
目录 本文提纲 ✍前言 版本约定 ✍正文 科比 裁员 如何避免被裁? 1.不要迷恋管理,一味追求"当官" 2.别以为裁员只裁一线,不裁管理层 3.即使步入管理,建议不要脱离技术 4 ...
- 关于线上JVM动态参数设置调优
p.p1 { margin: 0; -webkit-hyphens: auto; font: 16px Arial; color: rgba(68, 68, 68, 1); -webkit-text- ...
- 事件驱动之JDK观察者模式
JDK中关于观察者模式主要了解俩个概念 Observer观察者 Observable事件源:当事件源发生某事件时,有两个事情需要注意 1.里面有一个isChange属性 当为false时不会发通知给 ...
- Sqoop(四)增量导入、全量导入、减量导入
增量导入 一.说明 当在生产环境中,我们可能会定期从与业务相关的关系型数据库向Hadoop导入数据,导入数仓后进行后续离线分析.这种情况下我们不可能将所有数据重新再导入一遍,所以此时需要数据增量导入. ...
- 微信小程序--投票小程序设计与实现(图片、视频发布、分组、审核、排名)
投票微信小程序设计与实现(图片.视频发布.分组.审核.排名) 之前接到一个需求,设计一个类似H5 投票系统之类的小程序,我绞尽脑汁,冥思苦想,最后终于做了出来. 再次感谢 @文晓港 的ColorU ...
- Angular入门到精通系列教程(6)- Angular的升级
1. 摘要 2. https://update.angular.io/ 3. 总结 环境: Angular CLI: 11.0.6 Angular: 11.0.7 Node: 12.18.3 npm ...
- Spring Security OAuth2.0认证授权三:使用JWT令牌
Spring Security OAuth2.0系列文章: Spring Security OAuth2.0认证授权一:框架搭建和认证测试 Spring Security OAuth2.0认证授权二: ...
- Linux SSH , SCP 建立信任关系(免密传输)
最近有个需求,Jenkins需要将war传输到各个项目节点中,所以需要远程执行各个节点的shell脚本.但是中间有个输入密码的过程,在自动化部署中是行不通的,故需要增加免密登录.具体如下: 如果想在 ...
- SpringBoot嵌入式Servlet容器
SpringBoot默认是将Tomcat作为嵌入式的servlet容器. 问题: 如何修改嵌入式的servlet容器? 1)在配置文件中设置对应的属性值 server.port=8081 # Tomc ...