Nginx中的网站服务详解

 更新时间:2025年05月21日 14:22:51   作者:?ccc?  
这篇文章主要介绍了Nginx中的网站服务,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教

一:基于授权的访问控制

1:基于授权的访问控制简介

Nginx与 Apahce 一样,可以实现基于用户授权的访问控制,当客户端想要访问相应网站或者目录时,要求用户输入用户名和密码才能正常访问,配置步骤与 Apache 基本一致。

概括为以下几个步骤。

  • 生成用户密码认证文件。
  • 修改主配置文件相对应目录,添加认证配置项。
  • 重启服务,访问测试。

2:基于授权的访问控制步骤

(1)使用 htpasswd 生成用户认证文件

[root@localhost ~]# yum-y install httpd-tools
[root@localhost ~]# htpasswd -c /usr/local/nginx/passwd.db test
[root@localhost ~]# cat /usr/local/nginx/passwd.db

(2)修改密码文件权限为 400,将所有者改为 nginx,设置 Nginx 的运行用户能够读取。

[root@localhost ~# chmod 400 /usr/local/nginx/passwd. db
[root@localhost ~# chown nginx /usr/local/nginx/passwd. db
[root@localhost ~# 1l-d /usr/local/nginx/passwd. db

(3)修改主配置文件 nginx.conf,添加相应认证配置项。

[root@localhost # vim /usr/local/nginx/conf/nginx.conf
server {
    location / {
    auth basic "secret"
    auth basic user file /usr/local/nginx/passwd.db;
    }
}

(4)检测语法、重启服务。

[root@localhost#nginx -t
nginx: the configuration file /usr/local/nginx/conf/nginx. conf syntax is ok
nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful
[root@localhost # systemctl restart nginx

(5)用浏览器访问网址,检验控制效果,如图 5.2所示。需要输入用户名和密码进行访问,验证通过才能访问到页面。

二:基于客户端的访问控制

1:基于客户端的访问控制简介

基于客户端的访问控制是通过客户端IP地址,决定是否允许对页面访问Nginx 基于客户端的访问控制要比 Apache 简单,规则如下:

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

2:基于客户端的访问控制步骤

(1)修改主配置文件 nginx.conf,添加相应配置项。

location / {
root html;
index index.html index.htm;
# auth basic "secret";
# auth basic user file /usr/local/nginx/passwd.db;
deny 192.168.10.3;
allow all;

}

三:Nginx 虚拟主机

1:基于域名的虚拟主机

(1)设置客户端域名解析

修改 hosts 文件,加入www.benet.com 和 www.accp.com 这两个域名

  • 192.168.10.101 www.benet.com
  • 192.168.10.101 www.accp.com

(2)准备各个网站的目录和测试首页

[root@localhost ~]# mkdir -p /var/www/html/benet!
[root@localhost ~]# mkdir -p /var/www/htmllaccp!
[root@localhost ~# echo "www.benet.com''>> /var/www/html/benet/index.html
[root@localhost ~]# echo"www.accp.com">>/var/www/html/accp/index.html

(3)修改配置文件

[root@localhost ~]# vim /usr/local/nginx/conf/nginx.conf
server {
    listen       80;
    server_name  www.benet.com;
    access_log  logs/www.benet.com.access.log;
    charset utf-8;
    location / {
        root   /var/www/html/benet;
        index  index.html index.htm;
    }
    error_page 500 502 503 504 /50x.html;
    location = /50x.html {
        root   html;
    }
}
server {
    listen       80;
    server_name  www.accp.com;
    access_log  logs/www.accp.com.access.log;
    charset utf-8;
    location / {
        root   /var/www/html/accp;
        index  index.html index.htm;
    }
    error_page 500 502 503 504 /50x.html;
    location = /50x.html {
        root   html;
    }
}

(4)测试

2:基于 IP 的虚拟主机

一台主机如果有多个 IP 地址,可以设置每一个 IP 对应一个站点。主机安装多个网卡可以有多个 IP,这里采用虚拟 IP 的方式使主机有多个 IP。

(1)为服务器设置多个IP地址

[root@localhost ~]# cd /etc/sysconfig/network-scripts/
[root@localhost network-scripts]# cp ifcfg-ens33 ifcfg-ens33:0
[root@localhost network-scripts]# cp ifcfg-ens33 ifcfg-ens33:1
[root@localhost network-scripts]# vim ifcfg-ens33:0
IPADDR=192.168.10.151
NETMASK=255.255.255.0
GATEWAY=192.168.10.254
DNS1=223.6.6.6
NAME=ens33:0
DEVICE=ens33:0
[root@localhost network-scripts]# vim ifcfg-ens33:1
IPADDR=192.168.10.152
NETMASK=255.255.255.0
GATEWAY=192.168.10.254
DNS1=223.6.6.6
NAME=ens33:1
DEVICE=ens33:1
[root@localhost network-scripts]# nmcli c reload
[root@localhost network-scripts]# nmcli c up ens33
[root@localhost network-scripts]# ip add

(2)修改 Nginx的配置文件,使基于 IP 的虚拟主机生效

[root@localhost ~]# vim /usr/local/nginx/conf/nginx.conf 
    server {
        listen       192.168.10.151:80;
        server_name  www.benet.com;
.....
   }

    server {
        listen       192.168.10.152:80;
        server_name www.accp.com;
.....
}

[root@localhost ~]# systemctl restart nginx

3:基于端口的虚拟主机

(1)选择系统中不使用的端口,多个端口映射到同一 IP 地址

[root@localhost ~]# vim /usr/local/nginx/conf/nginx.conf 
    server {
        listen       192.168.10.101:8080;
        server_name  www.benet.com;
.....
   }

    server {
        listen       192.168.10.101:8888;
        server_name www.accp.com;
.....
}
[root@localhost ~]# systemctl restart nginx

(2)检测端口是否运行正常

[root@localhost ~]# netstat -anpt | grep nginx

(3)分别访问 2 个端口地址

四:LNMP 架构部署及应用

1:编译安装 MySQL 服务

(1)编译安装 MySQL 服务

[root@www ~]# yum install -y autoconf

备注:

Autoconf是一个用于生成可以自动地配置软件源代码包以适应多种Unix类系统的 shell脚本的工具。

[root@localhost ~]# yum -y install ncurses-devel gcc-c++ perl-Module-Install cmake
[root@localhost ~]# tar -zxvf mysql-5.6.36.tar.gz
[root@localhost ~]# cd mysql-5.6.36/
[root@localhost mysql-5.6.36]# cmake \
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci \
-DWITH_EXTRA_CHARSETS=all \
-DSYSCONFDIR=/etc
[root@localhost mysql-5.6.36]# make && make install

(2)复制配置文件到/etc 下,并把 MySQL 添加到服务

[root@localhost mysql-5.6.36]# cp support-files/my-default.cnf /etc/my.cnf 
[root@localhost mysql-5.6.36]# cp support-files/mysql.server /etc/init.d/mysqld
[root@localhost mysql-5.6.36]# chmod +x /etc/rc.d/init.d/mysqld 
[root@localhost mysql-5.6.36]# chkconfig --add mysqld 
[root@localhost mysql-5.6.36]# chkconfig mysqld on

[root@localhost mysql-5.6.36]# echo "PATH=$PATH:/usr/local/mysql/bin">> /etc/profile 
[root@localhost mysql-5.6.36]# . /etc/profile

(3)初始化数据库

[root@localhost ~]# groupadd mysql 
[root@localhost ~]# useradd -M -s /sbin/nologin mysql -g mysql
[root@localhost ~]# chown -R mysql.mysql /usr/local/mysql 

[root@localhost ~]# /usr/local/mysql/scripts/mysql_install_db --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data --user=mysql

(4)启动 mysql,并设置密码

[root@localhost ~]# systemctl start mysqld 
[root@localhost ~]# mysqladmin -u root password '123.com'

2:安装 PHP 解析环境

(1)编译安装 PHP

[root@localhost ~]# yum -y install gd libxml2-devel libjpeg-devel libpng-devel 

备注:

  • libxml2-devel:libxml是一个用来解析XML文档的函数库
  • libjpeg-devel #是一个完全用C语言编写的库,包含了被广泛使用的JPEG解码、JPEG编码和其他的JPEG功能的实现
  • libpng-devel #libpng 是一套免费的、公开源代码的程序库,支持对 PNG 图形文件的创建、读写等操作
  • GD指的是Graphic Device,PHP的GD库是用来处理图形的扩展库,通过GD库提供的一系列API,可以对图像进行处理或者直接生成新的图片。PHP除了能进行文本处理以外,通过GD库,可以对JPG、PNG、GIF、SWF等图片进行处理
  • zlib-devel #Zlib是一个压缩和解压模块
[root@localhost ~]#tar -zxvf php-5.5.38.tar.gz
[root@localhost ~]#cd php-5.5.38/ 
[root@localhost php-5.5.38]# ./configure \
--prefix=/usr/local/php5 \
--with-gd \
--with-zlib \
--with-mysql=/usr/local/mysql \
--with-mysqli=/usr/local/mysql/bin/mysql_config \
--with-config-file-path=/usr/local/php5 \
--enable-mbstring \
--enable-fpm \
--with-jpeg-dir=/usr/lib

(2)安装后调整

[root@localhost php-5.5.38]# cp php.ini-development /usr/local/php5/php.ini 
[root@localhost php-5.5.38]# ln -s /usr/local/php5/bin/* /usr/local/bin/ 
[root@localhost php-5.5.38]# ln -s /usr/local/php5/sbin/* /usr/local/sbin/

(3)安装 ZendGuardLoader

[root@localhost ~]# tar -zxvf zend-loader-php5.5-linux-x86_64_update1.tar.gz
[root@localhost ~]# cd zend-loader-php5.5-linux-x86_64/ 
[root@localhost zend-loader-php5.5-linux-x86_64]# cp ZendGuardLoader.so /usr/local/php5/lib/php/ 
[root@localhost zend-loader-php5.5-linux-x86_64]# vim /usr/local/php5/php.ini 

添加下列内容:

zend_extension=/usr/local/php5/lib/php/ZendGuardLoader.so
zend_loader.enable=1

3:配置 Nginx 支持 PHP 环境

(1)启用 php-fpm 进程

[root@localhost ~]# cd /usr/local/php5/etc/ 
[root@localhost etc]# cp php-fpm.conf.default php-fpm.conf 
[root@localhost etc]# useradd -M -s /sbin/nologin php 
[root@localhost etc]# vim php-fpm.conf

[root@localhost etc]# /usr/local/sbin/php-fpm 
[root@localhost etc]# netstat -anpt | grep php-fpm

[root@localhost ~]# vim /lib/systemd/system/php-fpm.service
[root@localhost ~]# systemctl daemon-reload
[root@localhost ~]# systemctl start php-fpm

(2)配置 Nginx 支持 PHP 解析

[root@localhost ~]# vim /usr/local/nginx/conf/nginx.conf 
Server{ 
listen 80; 
server_name www.bt.com; 

    	 location / {
            root   /var/www/html;
            index  index.html index.htm index.php;
        }

        location ~ \.php$ {
            root           /var/www/html;
            fastcgi_pass   127.0.0.1:9000;
            fastcgi_index  index.php;
            include        fastcgi.conf;
        }
}

3PHP 页面访问测试

[root@localhost ~]# mkdir -p /var/www/html/ 
[root@localhost ~]# vim /var/www/html/test1.php 
<?php 
phpinfo();
?>

[root@localhost ~]# vim /var/www/html/test2.php 
<?php 
$link=mysqli_connect('127.0.0.1','root','pwd123'); 
if($link) echo "<h1>恭喜你,数据库连接成功啦!!!</h1>"; 
mysqli_close($link); 
?>

4:在 LNMP 平台中部署 Web 应用

(1)下载并部署程序代码

[root@localhost ~]# yum -y install unzip
[root@localhost ~]# unzip Discuz_X3.3_SC_UTF8.zip 
[root@localhost ~]# mkdir -p /var/www/html/bbs 
[root@localhost ~]# mv upload/* /var/www/html/bbs 
[root@localhost ~]# chown -R php:php /var/www/html/bbs/

(2)创建数据库

[root@localhost ~]# mysql -uroot -p 
mysql>create database bbs; 
mysql>grant all on bbs.* to runbbs@127.0.0.1 identified by 'bbs123';
mysql>grant all on bbs.* to runbbs@'localhost' identified by 'bbs123';

(3) 安装 Web 应用

访问服务器 URL 地址,对网站进行初始化

http://192.168.10.101/bbs/install/index.php

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • Nginx从搭建到配置支持HTTPS的方法

    Nginx从搭建到配置支持HTTPS的方法

    这篇文章主要介绍了Nginx从搭建到配置支持HTTPS的方法,非常不错,具有一定的参考借鉴价值,需要的朋友可以参考下
    2018-07-07
  • Nginx实现灰度发布的多种策略分享

    Nginx实现灰度发布的多种策略分享

    灰度发布是一种重要的策略,它允许我们在不影响所有用户的情况下逐步推出新功能或更新,本文介绍了Nginx实现灰度发布的多种策略,有需要的小伙伴可以了解下
    2026-04-04
  • Nginx转发鉴权全过程

    Nginx转发鉴权全过程

    这篇文章主要介绍了Nginx转发鉴权全过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2025-06-06
  • nginx,apache的alias和认证功能

    nginx,apache的alias和认证功能

    从年前电脑换成linux系统后就没写东西,最近有点懒,在这里讲述下nginx alias 功能,不是server alias
    2012-11-11
  • Nginx本地目录映射实现代码实例

    Nginx本地目录映射实现代码实例

    这篇文章主要介绍了Nginx本地目录映射实现代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-10-10
  • nginx高可用集群的实现过程

    nginx高可用集群的实现过程

    这篇文章主要介绍了nginx高可用集群的实现过程,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-10-10
  • Nginx 504 Gateway Time-out的两种最新解决方案

    Nginx 504 Gateway Time-out的两种最新解决方案

    大家在访问网站的时候通常会遇到502错误、404错误等,很少会遇到504错误,但是在我们去访问大流量或者内容数据量较多的网站时,打开网页偶尔就会出现504 gateway time-out,这篇文章主要给大家介绍了关于Nginx 504 Gateway Time-out的两种解决方案,需要的朋友可以参考下
    2022-08-08
  • nginx做代理转发前端请求到后端的代码示例

    nginx做代理转发前端请求到后端的代码示例

    Nginx作为反向代理服务器,可以有效处理请求并转发到后端服务器,这篇文章主要介绍了nginx做代理转发前端请求到后端的相关资料,文中通过代码介绍的非常详细,需要的朋友可以参考下
    2025-01-01
  • 详解Nginx SSL快速双向认证配置(脚本)

    详解Nginx SSL快速双向认证配置(脚本)

    这篇文章主要介绍了详解Nginx SSL快速双向认证配置(脚本),小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-06-06
  • 详解实现Nginx+Tomcat实现单IP、多域名、多站点的访问

    详解实现Nginx+Tomcat实现单IP、多域名、多站点的访问

    这篇文章主要介绍了详解实现Nginx+Tomcat实现单IP、多域名、多站点的访问的相关资料,这里提供实例帮助到大家实现改功能,希望能帮助到大家,需要的朋友可以参考下
    2017-08-08

最新评论