Nginx入门
Posted 暴躁的程序猿啊
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Nginx入门相关的知识,希望对你有一定的参考价值。
nginx
文章参考了网上部分课程 感谢各位老师 门在这
是一个高性能的http和反向代理web服务器,同时提供了 IMAP、POP3、SMTP服务。
特点:占有内存少,并发能力强
完全用C语言从头写成,官方测试数据表明 能够支持高达五万个并发连接数的响应
几乎可以做到7*24小时不间断运行。
正向代理
VPN
例如我们访问外网
我们的服务器请求在香港的服务区 香港的服务器去请求美国的服务器 美国的服务器返回数据给香港服务器 香港服务器返回给我们
1.反向代理
反向代理,其实客户端对代理是无感知的,因为客户端不需要任何配置就可以访问,我们只需要将请求发送到反向代理服务器,由反向代理服务器去选择目标服务器获取数据后,再返回给客户端,此时反向代理服务器和目标代理服务器对外就是一个服务器,暴露的是代理服务器地址,隐藏了真实的服务器IP地址。
我们访问www.baidu.com 我们访问的域名永远是一个 但是我们访问到的服务器肯定是很多台.
正向代理代理客户端 反向代理代理服务端
2.负载均衡
我们增加服务器的数量,然后将请求分发到各个服务器上,将原先请求集中到单个服务器上的情况改为将请求分发到多个服务器上,将负载分到不同的服务器,也就是我们说的负载均衡;
策略: 轮询 加权轮询 IPhash
对客户端请求的ip进行hash操作,然后根据hash结果统一客户端ip 的请求分发给同一台服务器进行处理,可以解决session不共享问题。
3.动静分离
为了加快网站的解析速度,可以把动态页面和静态页面由不同的服务器来解析,加快解析速度。降低原来单个服务器的压力。
静态资源Nginx返回
Nginx安装
下载地址:http://nginx.org/en/download.html
window下载之后直接解压 cmd 运行
不能./configure的 安装编译工具及库文件
yum -y install gcc-c++ pcre pcre-devel zlib zlib-devel openssl openssl-devel
常用命令
- cd /usr/local/nginx/sbin/
- ./nginx 启动
- ./nginx -s stop 停止
- ./nginx -s quit 安全退出
- ./nginx -s reload 重新加载配置文件
- ps aux|grep nginx 查看nginx进程
Nginx在Linux上的安装
下载地址:http://nginx.org/en/download.html
nginx相关的素材
pcre
openssl
zlib
nginx
1.安装pcre依赖
解压压缩文件
tar -zxvf pcre-8.37.tar.gz
进入解压后的目录执行 命令 ./configure
make 命令执行不了的同学 。/configure后 最后一行会出现
configure: error: You need a C++ compiler for C++ support.
安装一下这个即可:yum install -y gcc gcc-c++
安装完毕后在执行 ./configure 在执行mak
使用make&&make install
make && make install
查看安装版本号
pcre-config --version
显示8.37
使用yml安装剩下的依赖软件
yum -y install make zlib zlib-devel gcc-c++ libtool openssl openssl-devel
安装nginx
1.解压安装包
tar -xvf nginx-1.12.2.tar.gz
2.进入解压缩目录,执行./configure
cd nginx-1.12.2
./configure
3.使用make&&make install命令编译安装
make&&make install
安装成功之后 会在 usr/local文件夹下自动生成一个nginx文件夹 该文件夹下包含了nginx的启动命令
启动命令在 nginx问价夹下的sbin文件夹中
启动nginx
进入目录/usr/local/nginx/sbin 使用命令 ./nginx回车即可
我们查看进程
命令 ps -ef|grep nginx
显示
root 6726 1 0 11:15 ? 00:00:00 nginx: master process ./nginx
nobody 6727 6726 0 11:15 ? 00:00:00 nginx: worker process
root 6751 30557 0 11:16 pts/0 00:00:00 grep --color=auto nginx
可以看到启动了两个进程
在nginx文件夹下有一个conf文件夹 当前工作空间/usr/local/nginx/conf
conf里面有一个文件 nginx.conf 打开文件 vim nginx.conf
我们可以看到里面配置的默认端口是80 我们打开浏览器访问
显示以下界面
Welcome to nginx!
If you see this page, the nginx web server is successfully installed and working. Further configuration is required.
For online documentation and support please refer to nginx.org.
Commercial support is available at nginx.com.
Thank you for using nginx.
查看防火墙开放的端口
firewall-cmd--list-all
设置开放端口号
firewall-cmd --add-service=http -permanent
开启8001端口示例
firewall-cmd --add-service=8001/tcp -permanent
重启防火墙
firewall-cmd --reload
nginx的常用命令
前提条件:使用nginx操作命令的前提条件:必须进入到nginx的目录中去 /usr/local/nginx/sbin
1.查看nginx版本号
./nginx -v
2.启动nginx
./nginx
3.关闭nginx
./nginx -s stop
此时查看进程 已经关闭了
ps -ef | grep nginx
4.重新加载nginx
./nginx -s reload
快速停止或关闭Nginx:nginx -s stop
正常停止或关闭Nginx:nginx -s quit
nginx的配置文件
1.nginx的配置文件位置
/usr/local/nginx/conf
Nginx配置文件有三部分组成
第一部分全局块
从配置文件开始到events块之间的内容,主要设置一些会影响nginx服务器整体运行的配置指令
比如 worker_processes 1;处理并发数的配置
第二部分events块
影响 Nginx 服务器与用户的网络连接
比如 worker_connections 1024; 支持的最大连接数为 1024
第三部分http块
包含两部分
http 全局块
配置的指令包括文件引入,MIME-TYPE定义、日志自定义连接超时时间、单链接请求数上限等
server 块
这部分和虚拟主机有着密切的联系,虚拟主机从用户角度看,和一台独立的硬件主机是完全一样的,该技术的产生是为了节省互联网服务器硬件成本。
每个Http块可以包含多个server块,每个server块相当于一个独立主机
Nginx的配置实例
配置nginx的反向代理
1.实现效果
打开浏览器,在浏览器地址栏输入地址www.123.com, 跳转Linux系统tomcat主页面中
先安转tomcat
安装tomcat 到/usr/src路径
解压 tar -zxvf apache-tomcat-9.0.59.tar.gz
tomcat运行需要jdk环境确保我们安装了jdk
运行tomcat 进入 tomcat的bin /usr/src/apache-tomcat-9.0.59/bin 目录执行./startup.sh
查看tomcat的日志 catalina.out
在nginx进行请求转发的配置
在nginx.conf配置文件中 加入 proxy_pass http:127.0.0.1:8080; 代表请求转发到8080
location /
root html;
proxy_pass http://127.0.0.1:8080;
index index.html index.htm;
保存 启动nginx进行测试
./nginx
访问
http://122.23.112.226:8080
反向代理示例2
效果
使用nginx反向代理,根据访问的路径跳转到不同的服务端口中
Nginx监听端口为9001
访问http:127.0.0.1:9001/edu/ 跳转到127.0.0.1:8081
访问http:127.0.0.1:9001/teacher / 跳转到127.0.0.1:8082
准备工作
1.准备两个tomcat 一个8080端口一个8081端口
2.在tomcat的webapps文件夹下创建一个edu文件夹,在edu文件夹中上传一个html文件测试使用
具体配置
1.在nginx的配置文件中进行反向代理的配置 加入如下配置
server
listen 9001;
server_name 122.23.112.226;
location ~ /edu/
proxy_pass http://localhost:8001;
location ~ /teacher/
proxy_pass http://localhost:8002;
2.开放对外访问的端口号 9001 8081
http:// 122.23.112.226:9001/edu/yanhua.html
localtion指令说明
该指令用于匹配url
语法
localhost [ =| ~ | ~* | ^~ ] uri
1.=用于不含正则表达式的uri前,要求请求字符串与uri严格匹配,如果匹配成功,就停止继续向下搜索并立即处理该请求。
2.~用户表示uri包含正则表达式,并且区分大小写。
3.~*:用于表示uri包含正则表达式,并且不区分大小写。
4.^~用于表示不包含正则表达式的uri前,要求nginx服务器找到标识uri和请求字符串匹配最高的localtion后,立即使用此localtion处理请求,而不再使用location块中的正则uri和请求字符串做匹配。
注意:如果uri包含正则表达式,则必须要有或者*标识。
Nginx配置-------负载均衡
1.实现效果
浏览器输入http://122.623.221.22/edu/yanhua.html,负载均衡效果将请求平均分配到8080和8081端口中
2.在nginx配置文件中进行配置
http
#http块中加入
upstream myserver
server 122.623.221.22:8080;
server 122.623.221.22:8081;
server
#server块中加入
location /
#location中加入
proxy_pass http://myserver;
nginx负载均衡的方式
1.轮询(默认)
每个请求按照一定时间顺序逐一分配到不同的后端服务器,如果后端服务器down掉,能自动剔除。
2.weight
weight代表权重,默认为1,权重越高被分配的请求越多
指定轮询几率,weight和访问率成正比,用于后端服务器性能不均衡的情况
加入weight
http
#http块中加入
upstream myserver
server 122.623.221.22:8080 weight=5;
server 122.623.221.22:8081 weight=10;
3.ip_hash
每个请求按访问ip的hash结果分配,这样每个访客固定访问一个后端服务器,可以解决session问题
http
#http块中加入
upstream myserver
ip_hash;
server 122.623.221.22:8080 weight=5;
server 122.623.221.22:8081 weight=10;
4.fair(第三方)
按后端服务器的响应时间分配请求,响应时间短的优先分配
http
#http块中加入
upstream myserver
server 122.623.221.22:8080 weight=5;
server 122.623.221.22:8081 weight=10;
fair;
Nginx配置实例-动静分离
动静分离简单来说就是把动态跟静态请求分开,不能理解成只是单纯的把动态页面和静态页面物理分离。严格意义上说应该是动态请求跟静态请求分开,可以理解成使用Nginx处理静态页面,Tomcat处理动态页面,从实现角度大致分为两种:
1.把静态文件放到独立的服务器上,目前主流推崇的方案
2.动态跟静态文件混合在一起,通过nginx分开;
准备工作:
1.在linux中准备一些静态资源,用于访问
/root/data/image
2.更改配置
location /image/
root /data/;
autoindex on;
访问http://122.623.221.22/image/logo.png
以上是关于Nginx入门的主要内容,如果未能解决你的问题,请参考以下文章