Nginx网站服务

Nginx网站服务

码农世界 2024-06-19 后端 101 次浏览 0个评论

一、Nginx基础 

        Nginx专为性能优化而开发,最知名的优点为:稳定、资源消耗低和对HTTP并发连接的高处理能力。

1.1 Nginx安装及运行控制

        1.1.1 Nginx安装

        以Nginx1.12版本为例,使用源代码包(可从官方网站http://www.nginx.org下载的形式下载。

Nginx网站服务

安装过程中的pcre-devel和zlib-devel分别是提供基于perl语言的正则表达式和压缩作用。 

        1.1.2 Nginx的运行控制

        因为前面创建了一个连接,所以可以在任何环境中使用nginx,直接使用就是启动nginx。结合“-t”选项是对主配置文件验证,”-c“选项则可以指定其他配置文件的路径进行验证。 

        若要终止nginx的运行,可以使用pkill命令终止nginx。也可以编写Nginx服务脚本,这样就能够使用chkconfig和systemctl工具管理了。通过在”/etc/init.d/“中创建名为nginx的脚本,写入以下内容:

①指定解释器

②第一项指定nginx进程的运行级别(即选择运行在单用户模式、多用户模式、图形化模式等),全部为"-",多个级别之间没有间隔。第二项指定开机自启的优先级,越大优先级越高,普通进程最高99。第三项指定关闭优先级,越小关闭的时间靠后。

③写描述,此项可以自定义。

④通过控制语句,如if、case,判断输入的参数(参数一般为start、reload、restart、stop),并进行响应的处理,这些处理需要使用nginx命令和pkill命令(用于终止nginx)。

在脚本编辑成功之后,加上运行权限,使用”chkconfig --add nginx“将nginx添加为系统服务,就可以使用chkconfig和systemctl进行管理了。 

1.2 Nginx的主配置文件

        主配置文件位于其安装目录的conf目录中,名为”nginx.conf“,包括全局配置、I/O事件配置和HTTP配置这三大块内容,配置语句的格式为:”关键字 值;“。

        1.2.1 全局配置

        由各种配置语句组成,不使用特定的界定标记。可以设置Nginx服务的运行用户、工作进程数、错误日志、PID存放位置等。

        1.2.2 I/O事件配置

        使用”events {}“界定标记,可以设置Nginx进程的I/O响应模型、每个进程的连接数等设置。进程的连接数与工作进程数有关联,关系为:工作进程数×进程的连接数=nginx提供服务的连接数。

        1.2.3 HTTP设置

        使用”http {}“界定标记,可以设置访问日志、HTTP端口、网页目录、默认字符集、连接保持、虚拟主机、PHP解析等,其中大部分配置语句都包含在子定界标记"server {}"内。

log_format main项可以设置访问日志的格式

listen指定不同站点各自监听的端口

root指定网页文件所在目录

charset可以设置默认字符集

keepalive_timeout设置连接保持时间

server {}设置虚拟主机,也叫站点、网站

location ~\.php {} 可以设置php解析相关配置

1.3 访问状态统计

        Nginx内置了HTTP_STUB_STATUS状态统计模块,用来反馈当前的Web访问情况。需要在配置时添加该模块,还需要修改nginx.conf配置文件,指定访问位置并添加stub_status配置代码。例如:Nginx网站服务

可以在浏览器中进行验证,使用IP地址进行访问并在后面指定"/status" 。

二、Nginx访问控制

        与Apache一样,有基于用户授权文件、IP的访问控制。

2.1 基于授权的访问控制

        当客户端要访问网页时,需要输入账号和密码才能继续访问,主要为以下几个步骤:

  • 生成用户密码认证文件。
    • 使用命令htpasswd生成用户认证文件(该命令可安装httpd-tools获取)。
    • htpasswd -c nginx安装路径/文件名.db 用户名 #新建授权文件并添加用户 
    • htpasswd nginx安装路径/文件名.db 用户名 #在已有授权文件中添加用户
    • 建议修改文件权限为400,且属主改为nginx。
  • 修改主配置文件相对应记录,添加认证配置项。
    • 在对应的站点的location中添加以下字段
      • auth_basic ”secret“;#指定验证方法为密码
      • auth_basic_user_file 用户授权文件位置;

    Nginx网站服务

  • 重启服务,访问测试。

    2.2 基于IP的访问控制

            nginx基于客户端的访问控制规则如下:

    • deny IP/IP段:拒绝某个IP或网段的客户端访问。
    • allow IP/IP段:允许某个IP或网段的客户端访问。 
    • 规则从上到下执行,如匹配则停止。

             只需在站点的location中添加上述格式的规则语句,重启服务后即可生效。

      三、Nginx虚拟主机

              Nginx和Apache一样,都可以在一台主机中托管多个站点。这些站点可以基于IP、域名、端口进行区分。

      3.1 基于域名的虚拟主机

              只需在主配置文件的对应域名站点中的location中指定网页文件所在的位置,并且确保nginx能够找到这个位置。  Nginx网站服务

      注意开始是没有fkk这个目录的,需要自己创建,并在里面添加网页文件,不同的站点不能使用相同的目录。可以根据自己需求创建多个"server {}"站点。

      3.2 基于IP的虚拟主机

              这种方式的站点数量会受主机拥有的IP地址数量的限制,因为一个IP对应一个站点。只需在站点中的listen项中添加IP地址即可,端口号可以保留或删除。

      3.3 基于端口的虚拟主机

      Nginx网站服务

      在实验环境中访问时,也使用”IP:端口“方式。

      四、LNMP架构部署及应用

      4.1 安装MySQL服务

                一般建议以源码包安装,本次用MySQL的5.6.36版本。先解压源码包并进入已解压后的目录中,使用cmake工具进行配置,以上步骤成功之后进行安装。

              在配置过程中,将默认使用的字符集设置为utf8,并添加其他字符集的支持(需要先安装cmake,可使用yum安装)。Nginx网站服务

              上述的配置命令中,各选项的含义如下:

      • -DCMAKE_INSTALL_PREFIX:指定将mysql数据库程序安装到某目录下。
      • -DSYSCONFDIR:指定初始化参数文件目录
      • -DEFAULT_CHARSET:指定默认使用的字符集编码。
      • -DEFAULT-COLLATION:指定默认使用的字符集校对规则,utf8_general_ci是适用于UTF-8字符集的通用规则。
      • -DWITH_EXTRA_CHARSETS:指定额外支持的其他字符集编码。

          为了加强数据库服务的权限控制,需要使用专门的运行用户。此用户不需要登录,不需要家目录:

        useradd -M -s /sbin/nologin mysql -g mysql

        #使用此用户对数据库进行初始化

        mysql的安装路径/scripts/mysql_install_db --basedir=mysql的安装路径 datadir=mysql的安装路径/data --user=mysql     

        以上所有步骤都完成之后就可以启动mysql了,此时的mysql没有root密码,建议进行设置。 

        4.2 安装PHP解析环境

                若要让Nginx能够解析PHP网页,有两种方法:

        • 将访问PHP页面的WEB请求交给其他服务器(LAMP)去处理。
        • 使用PHP的FPM模块调用本机的PHP环境。

                  此次以FPM模块进行处理。大致步骤为:编辑php-fpm.conf文件,修改其中的PID文件、运行用户/组(需要创建一个php用户,不能登录)、服务数(进程数量)等相关设置,之后启动php-fpm程序即可。

                 在php的安装路径/etc/php-fpm.conf文件中找到以下字符:

          • pid:此字符用于确认pid文件的位置,去掉注释
          • user:运行用户 
          • group:运行组
          • pm.max_children:
          • pm.start_servers
          • pm.min_spare_servers:最少空闲进程数
          • pm.max_spare_servers:最多空闲进程数

                  建议在nginx的服务脚本中添加与nginx相同结构的php-fpm的控制语句(php-fpm也可以直接执行php-fpm指令启动),以便在启动/停止Nginx服务器时将php-fpm进程也自动停止。

                  无论是将PHP页面交给LAMP服务去解析,还是调用本机的php-fpm进程进行解析,都需要在“"server{}"配置段中添加location设置,以便指定当访问.php页面时采取何种操作。

                  调用本机的php-fpm进程进行解析,使用的配置语句如下所示:Nginx网站服务

          之后重启nginx服务即可生效。最后可以创建一个测试页面,位置在基于上面图片中的root项,用来测试PHP语句能否正常解析,以及能否连接数据库。

          $link=mysqli_connect('127.0.0.1','root','数据库密码');

          if($link) echo "OK"; #如果数据库连接成功则显示OK

          mysqli_close($link); #关闭数据库连接。

          ?>

转载请注明来自码农世界,本文标题:《Nginx网站服务》

百度分享代码,如果开启HTTPS请参考李洋个人博客
每一天,每一秒,你所做的决定都会改变你的人生!

发表评论

快捷回复:

评论列表 (暂无评论,101人围观)参与讨论

还没有评论,来说两句吧...

Top