目錄
一、基于授權的訪問控制
1. 使用 htpasswd 生成用戶認證文件
2. 修改 Nginx 主配置文件
二、基于客戶端的訪問控制
三、Nginx 虛擬主機
1. 基于域名的虛擬主機
2. 基于 IP 的虛擬主機
3. 基于端口的虛擬主機
四、LNMP 架構部署及應用
1. 安裝 MariaDB
2. 安裝并配置 PHP
一、基于授權的訪問控制
1. 使用 htpasswd 生成用戶認證文件
htpasswd
可用于創建和管理用于基本認證的用戶密碼文件。執行以下命令來創建一個名為htpasswd.users
的文件,并添加一個名為testuser
的用戶:
htpasswd -c /etc/nginx/htpasswd.users testuser
執行該命令后,會提示你輸入
testuser
的密碼。
2. 修改 Nginx 主配置文件
要在 Nginx 中啟用基于授權的訪問控制,需要在配置文件里添加相關配置。以下是示例配置,假設要保護
/protected
路徑:server {listen 80;server_name example.com;location /protected {auth_basic "Restricted Access";auth_basic_user_file /etc/nginx/htpasswd.users;} }
輸入用戶名及密碼進行訪問
二、基于客戶端的訪問控制
可以通過allow
和deny
指令對特定 IP 地址或 IP 地址段進行訪問控制。以下是示例配置
server {listen 80;server_name example.com;# 只允許特定 IP 地址訪問allow 192.168.1.0/24;deny all;location / {# 其他配置} }
三、Nginx 虛擬主機
Nginx 也可以配置多種類型的虛擬主機,分別是基于 IP 的虛擬主機、基于域名的虛擬主機、基于端口的虛擬主機。
使用 Nginx 搭建虛擬主機服務器時,每個虛擬 web 站點擁有獨立的“server{}”配置段,各自監聽的 IP 地址、端口號可以單獨指定,當然網站名稱也是不同的
1. 基于域名的虛擬主機
設置客戶端域名解析并準備網站
在客戶端的/etc/hosts
文件中添加域名解析記錄:
127.0.0.1 site1.example.com 127.0.0.1 site2.example.com
在 Nginx 的網站根目錄下創建兩個不同的網站目錄和文件:
mkdir -p /var/www/site1 mkdir -p /var/www/site2 echo "This is site 1" > /var/www/site1/index.html echo "This is site 2" > /var/www/site2/index.html
修改配置文件
server {listen 80;server_name site1.example.com;root /var/www/site1;index index.html; }server {listen 80;server_name site2.example.com;root /var/www/site2;index index.html; }
在瀏覽器中訪問
http://site1.example.com
和http://site2.example.com
,分別查看不同的網站內容。
2. 基于 IP 的虛擬主機
一臺主機如果有多個 IP 地址,可以設置每一個 IP 對應一個站點。主機安裝多個網卡可以有多個 IP,這里采用虛擬 IP 的方式使主機有多個 IP。
假設你要為服務器添加兩個額外的 IP 地址192.168.1.101
和192.168.1.102
,可編輯網絡配置文件。
修改 Nginx 配置文件
server {listen 192.168.1.101:80;root /var/www/ip_site1;index index.html; }server {listen 192.168.1.102:80;root /var/www/ip_site2;index index.html; }
重新加載 Nginx 配置后,通過不同的 IP 地址訪問對應的網站。
3. 基于端口的虛擬主機
server {listen 8080;root /var/www/port_site;index index.html; }
客戶端驗證時,在瀏覽器中訪問
http://example.com:8080
來查看網站內容。
四、LNMP 架構部署及應用
LNMP 平臺是目前應用最為廣泛的網站服務器架構,
- L:linux系統
- N:nginx服務
- M:mysql服務
- P:php認證
1. 安裝 MariaDB
使用聯網的方式快速安裝 MariaDB:
sudo apt update sudo apt install mariadb-server
2. 安裝并配置 PHP
編譯安裝的基本信息
sudo apt install php-fpm php-mysql
安裝后的調整
編輯/etc/php/7.4/fpm/pool.d/www.conf
(根據實際 PHP 版本調整),確保listen
配置正確:
listen = /run/php/php7.4-fpm.sock
為 PHP 添加 Zend 優化模塊
安裝opcache
:
sudo apt install php-opcache
編輯
/etc/php/7.4/fpm/php.ini
(根據實際 PHP 版本調整),啟用opcache
:zend_extension=opcache.so opcache.enable=1
配置 Nginx 支持 PHP 環境
server {listen 80;server_name example.com;root /var/www/html;index index.php index.html;location / {try_files $uri $uri/ /index.php?$query_string;}location ~ \.php$ {fastcgi_pass unix:/run/php/php7.4-fpm.sock;fastcgi_index index.php;fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;include fastcgi_params;} }
準備 PHP 頁面代碼
在/var/www/html
目錄下創建一個info.php
文件:
<?php phpinfo(); ?>
在瀏覽器中訪問
http://example.com/info.php
,查看 PHP 信息頁面。