Nginx-服务介绍
yum安装
a 使用官方yum源进行安装        安装的是最新版本    软件目录结构比较标准(推荐)
b 使用非官方yum源进行安装    安装的不是最新版本    目录结构会发生变化
编译安装
1、
wget http://nginx.org/download/nginx-1.18.0.tar.gz
PS: 解决软件的依赖    openssl-devel pcre-devel
2、
解压下载好的软件,并进到目录中
3、
a 进行配置操作
./configure
–prefix=PATH               set installation prefix    
                           指定程序安装路径
–user=USER                 set non-privileged user for worker processes
                           设置一个虚拟用户管理worker进程(安全)
–group=GROUP               set non-privileged group for worker processes
                           设置一个虚拟用户组管理worker进程(安全)
b 进行软件的编译过程:
make 编译
c 编译安装过程
make install
yum官方安装方法
1、
vim /etc/yum.repos.d/nginx.repos
[nginx-stable]
name=nginx stable repo
baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
gpgcheck=1
enabled=1
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true
2、yum安装nginx
yum -y install nginx
3、启动nginx服务,检查服务是否安装正确
systemctl start nginx
systemctl enable nginx
查看软件的目录结构
重要文件:
01:/etc/nginx               配置文件
02: /var/log/nginx           日志文件
03:/usr/bin/nginx           命令文件
04:/usr/share/nginx/html    站点目录
            图片 附件信息 音频 视频
nginx服务配置文件
/etc/nginx/nginx.conf        #主配置文件
第一个部分:配置文件珠区域配置
user  nginx;                    #定义worker进程管理的用户
补充:nginx的进程
master process:    主进程        #管理服务是否能够正常运行    boss
worker process:    工作进程      #处理用户的访问请求          员工
worker_processes  1;            #定义有几个worker进程 == CPU核数
error_log  /var/log/nginx/error.log warn;    #定义错误日志路径信息
pid        /var/run/nginx.pid;               #定义pid文件路径信息
第二个部分:配置文件事件区域
events {
  worker_connections  1024;    #一个worker进程可以同时接受1024个访问请求
}
第三个部分:配置http区域
http {
     include       /etc/nginx/mime.types;       #加载一个配置文件
     default_type  application/octet-stream;    #指定默认识别文件类型
log_format  main ' $remote_addr - $remote_user [$time_local] "$request" '
                 ' $status $body_bytes_sent "$http_referer" '
                 ' "$http_user_agent" "$http_x_forwarded_for" ';
                 #定义日志的格式
     access_log  /var/log/nginx/access.log  main; #指定日志路径
     sendfile        on;
     #tcp_nopush     on;
     keepalive_timeout  65;    #超时时间
     #gzip  on;
     include /etc/nginx/conf.d/*.conf;   #加载一个配置文件
}
/etc/nginx/nginx.d/default        #扩展配置(虚拟主机配置文件)
第四个部分:server区域信息(配置一个网站 www/bbs/blog — 一个虚拟主机)
server {
    listen       80;                         #指定监听的端口
    server_name  localhost;                  #指定网站域名            
    root   /usr/share/nginx/html;            #定义站点目录的位置
    index  index.html index.htm;             #定义首页文件
    error_page   500 502 503 504  /50x.html; #优雅显示页面信息
    location = /50x.html {
        root   /usr/share/nginx/html;
    }
}
nginx服务的企业应用
利用nginx服务搭建一个网站
1、编写一个虚拟主机配置文件
cd /etc/nginx/conf.d/
vim www.conf
server {
        listen        80;
        server_name   www.test.com;
        location    /test {
            root    /usr/share/nginx/html;
            index   test.html;
        }     
}
2、需要获取开发人员编写的网站代码
<html>
      <meta charset=”utf-8″>
      <head>
        <title>test</title>
      </head>
      <body>
        <table border=1>
          <tr> <td>01</td> <td>test1</td> </tr>
          <tr> <td>02</td> <td>test2</td> </tr>
          <tr> <td>03</td> <td>test3</td> </tr>
        </table>
        <a href=”http://blog.testedu.com”>
          <img src=”test.jpg” />
        </a>
       </body>
</html>
3、重启nginx服务(平滑重启)
方法一:systemctl reload nginx
方法二:nginx -s reload
Nginx命令参数:
-t          :test configuration and exit
              检查测试配置文件语法
-s          :send signal to a master process,quie,reopen,reload        
              控制服务停止或者重新启动
4、编写DNS配置信息
真实域名:在阿里云上进行DNS解析记录配置
模拟域名:在windows主机的hosts文件中进行配置即可
C:\Windows\System32\drivers\etc\hosts
5、进行测试访问
浏览器中:http://www.test.com
部署搭建网站常见错误:
5.1. 网站服务配置文件编写不正确
404 错误
解决方法一:修改nginx配置文件—location
解决方法二:在站点目录中创建相应目录或文件数据信息
403 错误
解决方法一:不要禁止访问
解决方法二:没有首页文件
5.2. DNS信息配置不正确
5.3. 配置文件修改一定要重启服务;
站点目录中代码文件信息调整,不需要重启服务
利用Nginx搭建一个多网站(www bss blog)
5.3.1、创建多个虚拟主机配置文件
bbs.conf
    server {
        listen        80;
        server_name    bbs.test.top;
        location    / {
            root    /html/bbs;
            index    index.html;
        }
    }
blog.conf
    server {
        listen        80;
        server_name    blog.test.top;
        location    / {
            root    /html/blog;
            index    index.html;
        }
    }
www.conf
    server {
        listen        80;
        server_name    www.test.top;
        location    / {
            root    /html/www;
            index    index.html;
        }
    }
5.3.2、创建站点目录和目录中的首页文件
[root@web01 html]mkdir /html/{www,bbs,blog}
[root@web01 html]for name in /html/{www,bbs,blog}; do echo “10.0.0.7 $name.test.top” >> /html/$name/index.html ;done
[root@web01 html]# for name in {www,bbs,blog}; 
do cat  /html/$name/index.html ;done
 10.0.0.7 www.test.top
 10.0.0.7 bbs.test.top
 10.0.0.7 blog.test.top
5.3.3、编写host解析文件
10.0.0.7    www.test.top    bbs.test.top    blog.test.top
5.3.4、进行访问测试
1)利用windows进行浏览器访问测试
2)利用linux进行命令访问测试
[root@web02 ~]# curl www.test.top
10.0.0.7 www.test.top
[root@web02 ~]# curl bbs.test.top
10.0.0.7 bbs.test.top
[root@web02 ~]# curl blog.test.top
10.0.0.7 blog.test.top
3)企业中虚拟主机访问方式
a.基于域名的方式进行访问:
b.基于地址的方式进行访问:(只能用指定地址访问)   
用于负载均衡+高可用服务
server {
        listen        10.0.0.7:80;
        server_name    www.test.top;
        location    / {
           root    /html/www;
           index    index.html;
        }
}
PS:服务配置文件中涉及到地址修改,必须重启nginx服务,不能平滑重启
c.基于端口的方式进行访问:
server {
        listen        8080;
        server_name    www.test.top;
        location    / {
            root    /html/www;
            index    index.html;
        }
}
网站页面的访问原理:
1、将域名进行解析 www.test.top —— 10.0.0.7
2、建立TCP的链接(四层协议)
10.0.0.7    目标端口    80
3、根据应用层HTTP协议发出请求
请求报文:hosts:www.test.top
4、没有相同域名的server主机,会找满足端口要求的第一个主机
显示主机的网站页面
企业中网站的安全访问配置
a.根据用户访问的地址进行控制
10.0.0.0/24    www.test.top/AV/不能访问
172.16.1.0/24    www.test.vom/AV/可以访问
nginx访问模块:ngx_http_access_module
举例配置:
location / {
      deny  192.168.1.1;
      allow 192.168.1.0/24;
      allow 10.1.1.0/16;
      allow 2001:0db8::/32;
      deny  all;
}
指令用法
Syntax:    deny address | CIDR | unix: | all;
Default:    —
Context:    http, server, location, limit_except
1、编写配置文件
server {
        listen        80;
        server_name    www.test.top;
        location    / {
             root    /html/www;
             index    index.html;
        }
        location /AV {
             root     /html/www;
             index    index.html;
             deny 10.0.0.0/24;
             allow 172.16.1.0/24;    
        }
}
补充:
location外面的信息,全局配置信息
location里面的信息,局部配置信息
b.根据用户访问进行认证
nginx认证模块:module ngx_http_auth_basic_module
举例配置:
location / {
       auth_basic           “closed site”;    —开启认证功能
       auth_basic_user_file conf/htpasswd;      —加载用户密码文件
}
1、编写虚拟主机配置文件
server { 
    listen          80;
    server_name     www.test.top;
    location        / {
             root    /html/www;
             index   index.html;   auth_basic “test”;
             auth_basic_user_file password/htpasswd;
    }
2、创建密码文件(文件中密码信息必须是密文的)
htpasswd    创建一个有密文信息的密码文件
htpasswd命令参数说明:
-c  Create a new file.    ***                                            #创建一个密码文件
-n  Don’t update file; display results on stdout.						 #不会更新文件;显示文件内容信息
-b  Use the password from the command line rather than prompting for it. #免交互方式输入用户密码信息   
-i  Read password from stdin without verification (for script usage).    #读取密码采用标准输入方式,并不做检查  
-m  Force MD5 encryption of the password (default).                      #md5的加密算法
-2  Force SHA-256 crypt() hash of the password (secure).
-5  Force SHA-512 crypt() hash of the password (secure).
-B  Force bcrypt aencryption of the password (very secure).              #使用bcrypt对密码进行加密  
-C  Set the computing time used for the bcrypt algorithm
    (higher is more secure but slower, default: 5, valid: 4 to 31).      #使用bcrypt algorithm对密码进行加密  
-r  Set the number of rounds used for the SHA-256, SHA-512 algorithms
    (higher is more secure but slower, default: 5000).
-d  Force CRYPT encryption of the password (8 chars max, insecure).      #密码加密方式
-s  Force SHA-1 encryption of the password (insecure).                   #加密方式
-p  Do not encrypt the password (plaintext, insecure).                   #不进行加密
-D  Delete the specified user.                                           #删除指定用户
-v  Verify password for the specified user.
修改密码文件权限
chmod 600 /etc/nginx/htpasswd
500 Internal Server Error
1.内部程序代码编写有问题
2.程序服务中文件权限不正确
curl命令参数:
-u, –user USER[:PASSWORD]  Server user and password
[root@web02 ~]# curl www.test.top -u test
Enter host password for user ‘test’:
10.0.0.7 www.test.top

 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号