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 ...
随机推荐
- Java学习日报8.2
package user;import java.util.*; public class User { private String kouling; private String u; priva ...
- 错误总结Mapper扫描不到
Unsatisfied dependency expressed through field 'baseMapper'; nested exception is org.springframework ...
- 震惊!java中日期格式化的大坑!
前言 我们都知道在java中进行日期格式化使用simpledateformat.通过格式 yyyy-MM-dd 等来进行格式化,但是你知道其中微小的坑吗? yyyy 和 YYYY 示例代码 @Test ...
- DHCP.md
DHCP 主配置文件 从 /usr/share/doc/dhcp 复制 dhcpd.conf.sample 到/etc/dhcp下 ...
- 用python做youtube自动化下载器 代码
目录 项目地址 思路 流程 1. post i. 先把post中的headers格式化 ii.然后把参数也格式化 iii. 最后再执行requests库的post请求 iv. 封装成一个函数 2. 调 ...
- 几幅图,拿下 HTTPS
我很早之前写过一篇关于 HTTP 和 HTTPS 的文章,但对于 HTTPS 介绍还不够详细,只讲了比较基础的部分,所以这次我们再来深入一下 HTTPS,用实战抓包的方式,带大家再来窥探一次 HTTP ...
- Serverless 如何应对 K8s 在离线场景下的资源供给诉求
本文整理自腾讯云云原生产品团队的专家产品经理韩沛在 Techo 开发者大会云原生专题的分享内容--Kubernetes 混部与弹性容器.本次分享主要分为三部分:基于 K8s 的应用混部.提升应用混部效 ...
- 【C++】《C++ Primer 》第七章
第七章 类 一.定义抽象数据类型 类背后的基本思想:数据抽象(data abstraction)和封装(encapsulation). 数据抽象是一种依赖于接口(interface)和实现(imple ...
- Sentry(v20.12.1) K8S 云原生架构探索,SENTRY FOR JAVASCRIPT Source Maps 详解
系列 Sentry-Go SDK 中文实践指南 一起来刷 Sentry For Go 官方文档之 Enriching Events Snuba:Sentry 新的搜索基础设施(基于 ClickHous ...
- Redis-4.X 版本 Redis Cluster集群 (一)
一 创建redis cluster 集群前提条件: 1 ) 每个redis node 节点采用相同的硬件配置,相同的密码. 2 ) 每个节点必须开启的参数: cluster-enabled yes # ...