LNMP 架構部署

目錄

一、基于授權的訪問控制

(一)功能簡介

(二)配置步驟

二、基于客戶端的訪問控制

(一)功能簡介

(二)配置步驟

三、Nginx 虛擬主機

(一)基于域名的虛擬主機

(二)基于 IP 的虛擬主機

(三)基于端口的虛擬主機

四、LNMP 架構部署

(一)編譯安裝 MySQL

(二)安裝 PHP 解析環境

(三)配置 Nginx 支持 PHP

(四)部署 Web 應用(以 Discuz 為例)

總結


?

一、基于授權的訪問控制

(一)功能簡介

Nginx 支持通過用戶名和密碼對訪問特定目錄或網站的客戶端進行認證,配置邏輯與 Apache 相似,核心步驟包括生成認證文件、修改配置和重啟服務。

(二)配置步驟
  1. 生成用戶密碼認證文件
  • 首先安裝 ??httpd-tools???(包含 ??htpasswd?? 工具):
yum -y install httpd-tools
  • 創建認證文件并添加用戶(??-c??? 表示首次創建文件,路徑為 ??/usr/local/nginx/passwd.db???,用戶名為 ??test??):
htpasswd -c /usr/local/nginx/passwd.db test
  1. 設置文件權限與所有者
  • 確保只有 Nginx 運行用戶可讀取文件(假設 Nginx 用戶為 ??nginx??):
chmod 400 /usr/local/nginx/passwd.db  # 只讀權限
chown nginx /usr/local/nginx/passwd.db  # 所有者設為 nginx
  1. 修改 Nginx 主配置文件
    編輯 ???nginx.conf???,在目標 ??location?? 塊中添加認證配置:
server {listen 80;server_name localhost;location / {root html;index index.html index.htm;auth_basic "secret";  # 認證提示信息auth_basic_user_file /usr/local/nginx/passwd.db;  # 認證文件路徑}
}
  1. 驗證配置并重啟服務
nginx -t  # 檢測語法正確性
systemctl restart nginx  # 重啟 Nginx 使配置生效
  1. 訪問測試 瀏覽器輸入服務器 IP(如 ??http://192.168.10.101??),會彈出登錄框,輸入正確用戶名密碼即可訪問。

二、基于客戶端的訪問控制

(一)功能簡介

通過 ??deny??? 和 ??allow?? 規則,根據客戶端 IP 或 IP 段控制訪問,規則按順序執行,匹配即停止。

(二)配置步驟

在 ??location??? 塊中添加 IP 過濾規則(示例:拒絕 ??192.168.10.3??,允許其他所有 IP):

location / {root html;index index.html index.htm;deny 192.168.10.3;  # 拒絕單個 IPallow all;  # 允許所有 IP(需放在拒絕規則之后)
}

保存配置后,執行 ??nginx -t??? 和 ??systemctl restart nginx?? 生效。

三、Nginx 虛擬主機

(一)基于域名的虛擬主機
  1. 客戶端域名解析
    修改本地 ???hosts??? 文件(Windows 在 ??C:\Windows\System32\drivers\etc\hosts???,Linux 在 ??/etc/hosts??),添加:
192.168.10.101 www.benet.com
192.168.10.101 www.accp.com
  1. 準備網站目錄與測試頁面
mkdir -p /var/www/html/benet /var/www/html/accp  # 創建站點目錄
echo "www.aaaaaaaa.com" > /var/www/html/benet/index.html  # 生成測試首頁
echo "www.bbbbbbbbb.com" > /var/www/html/accp/index.html
  1. 配置 Nginx 虛擬主機
    在 ???nginx.conf??? 中添加兩個 ??server?? 塊,分別綁定不同域名和根目錄:
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;}
}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;}
}
  1. 測試訪問 瀏覽器輸入 ??http://www.benet.com??? 和 ??http://www.accp.com??,應顯示對應站點內容。

(二)基于 IP 的虛擬主機
  1. 添加虛擬 IP 地址
    通過復制網卡配置文件創建虛擬網卡(以 ???ens33?? 為例):
cd /etc/sysconfig/network-scripts/
cp ifcfg-ens33 ifcfg-ens33:0  # 創建第一個虛擬 IP 配置
cp ifcfg-ens33 ifcfg-ens33:1  # 創建第二個虛擬 IP 配置

編輯 ??ifcfg-ens33:0??? 和 ??ifcfg-ens33:1???,分別設置 ??IPADDR??? 為 ??192.168.10.151??? 和 ??192.168.10.152???,其他參數保持一致(如網關、DNS)。
重啟網絡服務使配置生效:

nmcli connection reload
nmcli connection up ens33
  1. 配置 Nginx 綁定 IP
    在 ???nginx.conf??? 中為每個 IP 綁定獨立的 ??server?? 塊:
server {listen 192.168.10.151:80;server_name www.benet.com;# 其他配置(如 root 目錄)
}server {listen 192.168.10.152:80;server_name www.accp.com;# 其他配置
}
(三)基于端口的虛擬主機

在 ??nginx.conf?? 中為同一 IP 分配不同端口(如 8080 和 8888):

server {listen 192.168.10.101:8080;server_name www.benet.com;# 端口 8080 站點配置
}server {listen 192.168.10.101:8888;server_name www.accp.com;# 端口 8888 站點配置
}

訪問時需在 URL 中添加端口(如 ??http://192.168.10.101:8080??)。

四、LNMP 架構部署

(一)編譯安裝 MySQL
  1. 準備依賴環境
yum install -y autoconf ncurses-devel gcc-c++ perl-Module-Install cmake
  1. 解壓并編譯 MySQL
tar -zxvf mysql-5.6.36.tar.gz
cd 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
make && make install
  1. 初始化與配置
cp support-files/my-default.cnf /etc/my.cnf  # 復制配置文件
cp support-files/mysql.server /etc/init.d/mysqld  # 添加服務腳本
chmod +x /etc/init.d/mysqld
chkconfig --add mysqld && chkconfig mysqld on  # 加入系統服務
echo "PATH=$PATH:/usr/local/mysql/bin" >> /etc/profile  # 添加環境變量
. /etc/profile  # 立即生效
  1. 創建用戶與初始化數據庫
groupadd mysql && useradd -M -s /sbin/nologin mysql -g mysql
chown -R mysql:mysql /usr/local/mysql
/usr/local/mysql/scripts/mysql_install_db --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data --user=mysql
systemctl start mysqld  # 啟動服務
mysqladmin -u root password '123.com'  # 設置 root 密碼
(二)安裝 PHP 解析環境
  1. 安裝依賴庫
yum -y install gd libxml2-devel libjpeg-devel libpng-devel zlib-devel
  1. 編譯 PHP
tar -zxvf php-5.5.38.tar.gz
cd 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
make && make install
(三)配置 Nginx 支持 PHP
  1. 啟動 php-fpm 服務
cd /usr/local/php5/etc/
cp php-fpm.conf.default php-fpm.conf  # 復制配置模板
useradd -M -s /sbin/nologin php  # 創建 php 專用用戶
vim php-fpm.conf  # 修改用戶、進程數等配置(如 user=php, group=php)
/usr/local/sbin/php-fpm  # 啟動服務
  1. Nginx 配置 PHP 解析
    在 ???server??? 塊中添加 PHP 解析規則(匹配 ??.php?? 文件):
location ~ \.php$ {root /var/www/html;fastcgi_pass 127.0.0.1:9000;  # 指向 php-fpm 監聽端口fastcgi_index index.php;include fastcgi.conf;
}
  1. 測試 PHP 頁面
    創建測試文件 ???test1.php???(輸出 PHP 信息)和 ??test2.php???(測試數據庫連接),訪問 ??http://服務器 IP/test1.php?? 應顯示 PHP 環境信息。
(四)部署 Web 應用(以 Discuz 為例)
  1. 準備程序文件
yum -y install unzip
unzip Discuz_X3.3_SC_UTF8.zip
mkdir -p /var/www/html/bbs && mv upload/* /var/www/html/bbs
chown -R php:php /var/www/html/bbs  # 賦予 php 用戶權限
  1. 創建數據庫
mysql -uroot -p  # 登錄 MySQL
create database bbs;  # 創建數據庫
grant all on bbs.* to runbbs@'127.0.0.1' identified by 'bbs123';  # 授權本地訪問
grant all on bbs.* to runbbs@'localhost' identified by 'bbs123';
  1. 初始化安裝 瀏覽器訪問 ??http://服務器 IP/bbs/install/index.php??,按向導完成安裝,配置數據庫信息即可。

總結

本文詳細介紹了 Nginx 的兩種訪問控制機制(用戶認證與 IP 過濾)、三種虛擬主機配置(域名、IP、端口)以及 LNMP 架構的完整部署流程。通過這些配置,可實現服務器資源的安全控制、多站點高效管理及動態 Web 應用的穩定運行。實際應用中,需根據業務需求調整參數(如并發連接數、緩存策略),并定期更新組件以保障安全性和性能。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/81682.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/81682.shtml
英文地址,請注明出處:http://en.pswp.cn/web/81682.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

JVM與JMM深度解析:從Java 8到Java 21的演進

文章目錄 第一部分:JVM基礎概念與架構JVM是什么?JVM整體架構運行時數據區類加載機制執行引擎 第二部分:Java內存模型(JMM)什么是Java內存模型JMM的核心問題主內存與工作內存內存間交互操作重排序與happens-before原則v…

Docker 掛載卷并保存為容器

1 創建docker容器 使用鏡像osrf/ros:humble-desktop-full-jammy創建并運行容器 sudo docker run -it --name ros2_humble osrf/ros:humble-desktop-full-jammy /ros_entrypoint.sh bash docker run -it -v d:\docker\ros2_humble:/root/ros2_ws osrf/ros:humble-desktop-fu…

無人機飛手共享接單平臺

2025年,無人機已不再是“黑科技”的代名詞。從農田噴灑到外賣配送,從航拍攝影到醫療急救,無人機正以驚人的速度滲透我們的生活。而在這場變革中, “無人機飛手共享接單平臺” 成為連接技術與需求的核心樞紐。它不僅讓專業飛手輕松…

【Web應用】若依框架:基礎篇07功能詳解-定時任務

文章目錄 ?前言?一、講解過程?二、動手實操?總結 標題詳情作者JosieBook頭銜CSDN博客專家資格、阿里云社區專家博主、軟件設計工程師博客內容開源、框架、軟件工程、全棧(,NET/Java/Python/C)、數據庫、操作系統、大數據、人工智能、工控、網絡、程序…

8.8 Primary ODSA service without ODSA Portal

主要ODSA服務(不使用ODSA門戶) 以下場景描述如下情況: ? 主ODSA客戶端應用程序被允許用于該類型的主設備,且對終端用戶啟用(已授權)。 ? 服務提供商(SP)能夠在不涉及ODSA門戶Web服…

深度檢測與動態透明度控制 - 基于Babylon.js的遮擋檢測實現解析

首先貼出實現代碼: OcclusionFader.ts import { AbstractEngine, Material, type Behavior, type Mesh, type PBRMetallicRoughnessMaterial, type Scene } from "babylonjs/core"; import { OcclusionTester } from "../../OcclusionTester"…

openssl 使用生成key pem

好的,以下是完整的步驟,幫助你在 Windows 系統中使用 OpenSSL 生成私鑰(key)和 PEM 文件。假設你的 openssl.cnf 配置文件位于桌面。 步驟 1:打開命令提示符 按 Win R 鍵,打開“運行”對話框。輸入 cmd&…

音視頻之視頻壓縮及數字視頻基礎概念

系列文章: 1、音視頻之視頻壓縮技術及數字視頻綜述 一、視頻壓縮編碼技術綜述: 1、信息化與視頻通信: 什么是信息: 眾所周知,人類社會的三大支柱是物質、能量和信息。具體而言,農業現代化的支柱是物質&…

傳統數據表設計與Prompt驅動設計的范式對比:以NBA投籃數據表為例

引言:數據表設計方法的演進 在數據庫設計領域,傳統的數據表設計方法與新興的Prompt驅動設計方法代表了兩種截然不同的思維方式。本文將以NBA賽季投籃數據表(shots)的設計為例,深入探討這兩種方法的差異、優劣及適用場景。隨著AI技術在數據領…

XCTF-web-mfw

發現了git 使用GitHack下載一下源文件&#xff0c;找到了php源代碼 <?phpif (isset($_GET[page])) {$page $_GET[page]; } else {$page "home"; }$file "templates/" . $page . ".php";// I heard .. is dangerous! assert("strpos…

Prompt Tuning與自然語言微調對比解析

Prompt Tuning 與輸入提示詞自然語言微調的區別和聯系 一、核心定義與區別 維度Prompt Tuning(提示微調)輸入提示詞自然語言微調本質優化連續向量空間中的提示嵌入(不可直接閱讀)優化離散自然語言文本(人類可理解)操作對象模型輸入嵌入層的連續向量(如WordEmbedding)自…

LVS的DR模式部署

目錄 一、引言&#xff1a;高并發場景下的流量調度方案 二、LVS-DR 集群核心原理與架構設計 &#xff08;一&#xff09;工作原理與數據流向 數據包流向步驟3&#xff1a; &#xff08;二&#xff09;模式特性與53網絡要求 三、實戰配置&#xff1a;從9環境搭建到參數調整…

8種常見數據結構及其特點簡介

一、8種常見數據結構 1. 數組&#xff08;Array&#xff09; 簡介&#xff1a;數組是有序元素的序列&#xff0c;連續內存塊存儲相同類型元素&#xff0c;通過下標直接訪問。數組會為存儲的元素都分配一個下標&#xff08;索引&#xff09;&#xff0c;此下標是一個自增連續的…

通過mailto:實現web/html郵件模板喚起新建郵件并填寫內容

一、背景 在實現網站、html郵件模板過程中&#xff0c;難免會遇到需要通過郵箱向服務提供方發起技術支持等需求&#xff0c;因此&#xff0c;我們需要通過一個功能&#xff0c;能新建郵件并提供模板&#xff0c;提高溝通效率 二、mailto協議配置說明 參數描述mailto:nameema…

好用但不常用的Git配置

參考文章 文章目錄 tag標簽分支新倉庫默認分支推送 代碼合并沖突處理默認diff算法 tag標簽 默認是以字母順序排序&#xff0c;這會導致一些問題&#xff0c;比如0.5.101排在0.5.1000之后。為了解決這個問題&#xff0c;我們可以把默認排序改為數值排序 git config --global t…

第六十八篇 從“超市收銀系統崩潰”看JVM性能監控與故障定位實戰

目錄 引言&#xff1a;當技術問題遇上生活場景一、JVM的“超市貨架管理哲學”二、收銀員工具箱&#xff1a;JVM監控三板斧三、典型故障診斷實錄四、防患于未然的運維智慧五、結語&#xff1a;從故障救火到體系化防控 引言&#xff1a;當技術問題遇上生活場景 想象一個周末的傍…

tauri2項目打開某個文件夾,類似于mac系統中的 open ./

在 Tauri 2 項目中打開文件夾 在 Tauri 2 項目中&#xff0c;你可以使用以下幾種方法來打開文件夾&#xff0c;類似于 macOS 中的 open ./ 命令功能&#xff1a; 方法一&#xff1a;使用 shell 命令 use tauri::Manager;#[tauri::command] async fn open_folder(path: Strin…

編譯pg_duckdb步驟

1. 要求cmake的版本要高于3.17&#xff0c;可以通過下載最新的cmake的程序&#xff0c;然后設置.bash_profile的PATH環境變量&#xff0c;將最新的cmake的bin目錄放到PATH環境變量的最前面 2. g的版本要支持c17標準&#xff0c;否則會報 error ‘invoke_result in namespace ‘…

GO 語言中變量的聲明

Go 語言變量名由字母、數字、下劃線組成&#xff0c;其中首個字符不能為數字。Go 語言中關鍵字和保留字都不能用作變量名。Go 語言中的變量需要聲明后才能使用&#xff0c;同一作用域內不支持重復聲明。 并且 Go 語言的變量聲明后必須使用。 1. var 聲明變量 在 Go 語言中&…

windows和mac安裝虛擬機-詳細教程

簡介 虛擬機&#xff1a;Virtual Machine&#xff0c;虛擬化技術的一種&#xff0c;通過軟件模擬的、具有完整硬件功能的、運行在一個完全隔離的環境中的計算機。 在學習linux系統的時候&#xff0c;需要安裝虛擬機&#xff0c;在虛擬機上來運行操作系統&#xff0c;因為我使…