Nginx中的網(wǎng)站服務(wù)詳解
一:基于授權(quán)的訪問控制
1:基于授權(quán)的訪問控制簡介
Nginx與 Apahce 一樣,可以實現(xiàn)基于用戶授權(quán)的訪問控制,當客戶端想要訪問相應(yīng)網(wǎng)站或者目錄時,要求用戶輸入用戶名和密碼才能正常訪問,配置步驟與 Apache 基本一致。
概括為以下幾個步驟。
- 生成用戶密碼認證文件。
- 修改主配置文件相對應(yīng)目錄,添加認證配置項。
- 重啟服務(wù),訪問測試。
2:基于授權(quán)的訪問控制步驟
(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)修改密碼文件權(quán)限為 400,將所有者改為 nginx,設(shè)置 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,添加相應(yīng)認證配置項。
[root@localhost # vim /usr/local/nginx/conf/nginx.conf
server {
location / {
auth basic "secret"
auth basic user file /usr/local/nginx/passwd.db;
}
}(4)檢測語法、重啟服務(wù)。
[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)用瀏覽器訪問網(wǎng)址,檢驗控制效果,如圖 5.2所示。需要輸入用戶名和密碼進行訪問,驗證通過才能訪問到頁面。

二:基于客戶端的訪問控制
1:基于客戶端的訪問控制簡介
基于客戶端的訪問控制是通過客戶端IP地址,決定是否允許對頁面訪問Nginx 基于客戶端的訪問控制要比 Apache 簡單,規(guī)則如下:
- deny IP/IP 段:拒絕某個IP或IP 段的客戶端訪問
- allow IP/IP 段:允許某個IP或IP 段的客戶端訪問。
- 規(guī)則從上往下執(zhí)行,如匹配則停止,不再往下匹配。
2:基于客戶端的訪問控制步驟
(1)修改主配置文件 nginx.conf,添加相應(yīng)配置項。
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)設(shè)置客戶端域名解析
修改 hosts 文件,加入www.benet.com 和 www.accp.com 這兩個域名
- 192.168.10.101 www.benet.com
- 192.168.10.101 www.accp.com
(2)準備各個網(wǎng)站的目錄和測試首頁
[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 地址,可以設(shè)置每一個 IP 對應(yīng)一個站點。主機安裝多個網(wǎng)卡可以有多個 IP,這里采用虛擬 IP 的方式使主機有多個 IP。
(1)為服務(wù)器設(shè)置多個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 nginx3:基于端口的虛擬主機
(1)選擇系統(tǒng)中不使用的端口,多個端口映射到同一 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 架構(gòu)部署及應(yīng)用
1:編譯安裝 MySQL 服務(wù)
(1)編譯安裝 MySQL 服務(wù)
[root@www ~]# yum install -y autoconf
備注:
Autoconf是一個用于生成可以自動地配置軟件源代碼包以適應(yīng)多種Unix類系統(tǒng)的 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 添加到服務(wù)
[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)初始化數(shù)據(jù)庫
[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,并設(shè)置密碼
[root@localhost ~]# systemctl start mysqld [root@localhost ~]# mysqladmin -u root password '123.com'
2:安裝 PHP 解析環(huán)境
(1)編譯安裝 PHP
[root@localhost ~]# yum -y install gd libxml2-devel libjpeg-devel libpng-devel
備注:
- libxml2-devel:libxml是一個用來解析XML文檔的函數(shù)庫
- libjpeg-devel #是一個完全用C語言編寫的庫,包含了被廣泛使用的JPEG解碼、JPEG編碼和其他的JPEG功能的實現(xiàn)
- libpng-devel #libpng 是一套免費的、公開源代碼的程序庫,支持對 PNG 圖形文件的創(chuàng)建、讀寫等操作
- 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)安裝后調(diào)整
[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
添加下列內(nèi)容:
zend_extension=/usr/local/php5/lib/php/ZendGuardLoader.so zend_loader.enable=1
3:配置 Nginx 支持 PHP 環(huán)境
(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;
}
}
(3)PHP 頁面訪問測試
[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>恭喜你,數(shù)據(jù)庫連接成功啦?。?!</h1>";
mysqli_close($link);
?>4:在 LNMP 平臺中部署 Web 應(yīng)用
(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)創(chuàng)建數(shù)據(jù)庫
[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 應(yīng)用
訪問服務(wù)器 URL 地址,對網(wǎng)站進行初始化
http://192.168.10.101/bbs/install/index.php


總結(jié)
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
nginx-proxy-manager初次登錄報錯502?bad?gateway解決
這篇文章主要給大家介紹了關(guān)于nginx-proxy-manager初次登錄報錯502?bad?gateway的解決辦法,502?Bad?Gateway服務(wù)器作為網(wǎng)關(guān)或者代理時,為了完成請求訪問下一個服務(wù)器,但該服務(wù)器返回了非法的應(yīng)答,需要的朋友可以參考下2024-04-04
Nginx內(nèi)網(wǎng)環(huán)境開啟https雙協(xié)議的實現(xiàn)
本文主要介紹了Nginx內(nèi)網(wǎng)環(huán)境開啟https雙協(xié)議,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2025-02-02
windows系統(tǒng)下安裝Nginx及簡單使用過程
Nginx是一個很強大的高性能Web和反向代理服務(wù),也是一種輕量級的Web服務(wù)器,可以作為獨立的服務(wù)器部署網(wǎng)站,應(yīng)用非常廣泛,特別是現(xiàn)在前后端分離的情況下,這篇文章主要介紹了windows系統(tǒng)下安裝Nginx以及簡單使用,需要的朋友可以參考下2024-04-04
Nginx服務(wù)器下配置個性二級域名及多個域名的實例講解
這篇文章主要介紹了Nginx服務(wù)器下配置個性二級域名及多個域名的實例講解,注意一下rewrite的寫法規(guī)則,需要的朋友可以參考下2016-01-01
Nginx服務(wù)器中使用gzip壓縮的相關(guān)配置解析
這篇文章主要介紹了Nginx服務(wù)器中使用gzip壓縮的相關(guān)配置解析,包括對gzip請求處理相關(guān)的壓縮配置,需要的朋友可以參考下2015-12-12

