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

常用命令

  1. cd /usr/local/nginx/sbin/
  2. ./nginx 启动
  3. ./nginx -s stop 停止
  4. ./nginx -s quit 安全退出
  5. ./nginx -s reload 重新加载配置文件
  6. 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,负载均衡效果将请求平均分配到80808081端口中

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入门的主要内容,如果未能解决你的问题,请参考以下文章

Nginx教程 Nginx入门教程

Nginx教程 Nginx入门教程

Nginx入门必知

01_Nginx入门

快速入门 Nginx,这篇就够了!

nginx入门