nginx服務器實驗

1.實驗要求

1)在Nginx服務器上搭建LNMP服務,并且能夠對外提供Discuz論壇服務。
在Web1、Web2服務器上搭建Tomcat 服務。

2)為nginx服務配置虛擬主機,新增兩個域名 www.kgc.com 和 www.benet.com,使用http://www.kgc.com/index.php可訪問上一題的Discuz論壇頁面。
使用http://www.benet.com則訪問/var/www/html目錄中的index.html文件的內容,內容自定義。

3)對基于www.benet.com域名的虛擬機主機的nginx服務調優:隱藏nginx版本號,緩存靜態圖片網頁時間為1天,設置防盜鏈功能。

4)網關服務器搭建NFS服務,提供的文件系統使用LVM類型,共享目錄名稱為/opt/nfs;要求根據日期對Discuz論壇服務的訪問日志進行日志分割,要求每天生成一份日志文件,保存到NFS服務共享的目錄內

5)要求配置location匹配請求地址http://www.kgc.com/test/XXXX,使用戶訪問該路徑下的文件時返回/var/share/nginx/html/目錄下的文件內容。
要求使用rewrite將使用域名www.benet.com 請求以 .php 結尾的訪問都跳轉到域名www.kgc.com上,而且后面的參數保持不變,比如訪問http://www.benet.com/bbs/index.php跳轉到http://www.kgc.com/bbs/index.php。

6)在Nginx服務器上對基于www.benet.com域名的虛擬機主機設置動靜分離由nginx提供靜態頁面服務,將對 .jsp文件的動態頁面請求轉發到Tomcat 服務器處理,并實現負載均衡

7)在網關服務器上設置SNAT/DNAT,使client使用網關服務器的ens36接口的IP地址訪問也可實現上一題的效果。

注:IP地址自己規劃

要求1

nginx搭建LNMP


#安裝nginx
yum -y install epel-release
yum -y install nginx#安裝mysql:
tee /etc/yum.repos.d/mysql.repo <<EOF
[mysql57-community]
name=MySQL 5.7 Community Server
baseurl=http://repo.mysql.com/yum/mysql-5.7-community/el/7/x86_64/
enabled=1
gpgcheck=0
EOFyum clean all &&yum makecacheyum -y install mysql-community-server
systemctl start mysqld#進入mysql數據庫,第一次密碼是默認密碼
mysql-uroot -p 
grep "password" /var/log/mysql.log
2025-05-09T08:30:52.285182Z 1 [Note] A temporary password is generated for r                                                                                                          oot@localhost: wUtlmd-q;6<V
mysql -uroot -p'wUtlmd-q;6<V'#每個密碼都是不一樣的,需要自己查看自己的默認密碼#修改數據庫密碼為“abc123”
set global validate_password_policy=0;
set global validate_password_length=1;
alter user root@'localhost' identified by 'abc123';
#使用ctrl+d#編譯安裝php,需要php-7.1.10.tar.bz2壓縮包:
#安裝環境
yum -y install gd \
libjpeg libjpeg-devel \
libpng libpng-devel \
freetype freetype-devel \
libxml2 libxml2-devel \
zlib zlib-devel \
curl curl-devel \
openssl openssl-devel#解壓安裝包,編譯并安裝
tar xf php-7.1.10.tar.bz2
cd php-7.1.10
./configure \
--prefix=/usr/local/php \
--with-mysql-sock=/usr/local/mysql/mysql.sock \
--with-mysqli \
--with-zlib \
--with-curl \
--with-gd \
--with-jpeg-dir \
--with-png-dir \
--with-freetype-dir \
--with-openssl \
--enable-fpm \
--enable-mbstring \
--enable-xml \
--enable-session \
--enable-ftp \
--enable-pdo \
--enable-tokenizer \
--enable-zipmake&&make install#將php寫入PATH
ln -s /usr/local/php/bin/* /usr/local/bin/
ln -s /usr/local/php/sbin/* /usr/local/sbin/#調整配置文件
cp /opt/php-7.1.10/php.ini-development  /usr/local/php/lib/php.ini
vim /usr/local/php/lib/php.ini
#939行
date.timezone = Asia/Shanghai
#1170行
mysqli.default_socket = /var/lib/mysql/mysql.sockcd /usr/local/php/etc/
cp php-fpm.conf.default php-fpm.conf
cd php-fpm.d
cp www.conf.default www.conf
cp /opt/php-7.1.10/sapi/fpm/php-fpm.service   /usr/lib/systemd/system/php-fpm.servicesystemctl daemon-reload
systemctl start php-fpm.service
systemctl status nginx mysqld php-fpmvim /etc/nginx/nignx.conf#server模塊下
index index.html index.htm index.php;
....
location ~ \.php$ {
root           html;
fastcgi_pass   127.0.0.1:9000;
fastcgi_index  index.php;
fastcgi_param  SCRIPT_FILENAME  /usr/share/nginx/html$fastcgi_script_name;
include        fastcgi_params;mysql -uroot -p '密碼'
CREATE DATABASE bbs;
set global validate_password_policy=0;
set global validate_password_length=1;
GRANT all ON bbs.* TO 'bbsuser'@'%' IDENTIFIED BY 'admin123';
GRANT all ON bbs.* TO 'bbsuser'@'localhost' IDENTIFIED BY 'admin123';
flush privileges;
show databases;安裝論壇,準備Discuz_X3.4_SC_UTF8.zip壓縮包:
unaip  Discuz_X3.4_SC_UTF8.zip
cp -a dir_SC_UTF8/upload  /usr/share/nginx/html/bbscd /usr/share/nginx/html/bbs
chown -R nobody ./config/
chown -R nobody ./data/
chown -R nobody ./uc_client/
chown -R nobody ./uc_server/訪問http://IP地址/bbs  

#創建數據庫頁面
數據庫用戶名 :bbsuser (mysql數據庫里設定)
數據庫密碼:admin123(mysql數據庫里設定)
...
管理員密碼:abc123
二次確認:abc123

搭建tomcat

準備jdk-8u201-linux-x64.rpm;apache-tomcat-9.0.16.tar.gz2個壓縮包
tar xf jdk-8u201-linux-x64.rpm -C /usr/local/
tar xf apache-tomcat-9.0.16.tar.gz -C /usr/local/cd /usr/local/
ln -s /usr/local/jdk1.8.0_291/ ./jdk
ln -s /usr/local/apache-tomcat-9.0.16/ ./tomcat
vim /etc/profile.d/jdk.shexport JAVA_HOME=/usr/local/jdk
export PATH=$JAVA_HOME/bin:$PATH
export JRE_HOME=$JAVA_HOME/jre
export CLASSPATH=$JAVA_HOME/lib:$JRE_HOME/libsource /etc/profile.d/jdk.shtomcat安裝:
useradd -M -s /sbin/nologin tomcat
chown -R tomcat:tomcat /usr/local/apache-tomcat-9.0.16/
vim /usr/lib/systemd/system/tomcat.service[Unit]
Description=Tomcat
After=syslog.target network.target[Service]
Type=forking
Environment=PATH=$PATH:$JAVA_HOME/bin
Environment=CLASSPATH=/usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
Environment=CATALINA_HOME=/usr/local/tomcat
Environment=JAVA_HOME=/usr/local/jdk
Environment=CATALINA_HOME=/usr/local/tomcat
Environment=PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin:/usr/local/jdk/bin
ExecStart=/usr/local/tomcat/bin/startup.sh
ExecStop=/usr/local/tomcat/bin/shutdown.sh
RestartSec=3
PrivateTmp=true
User=tomcat
Group=tomcat[Install]
WantedBy=multi-user.targetsystemctl daemon-reload
systemctl start tomcat
systemctl status tomcat測試:
訪問此IP地址的8080端口

要求2

vim /etc/nginx/nginx.conf
#添加到server模塊下
include /etc/nginx/conf.d/*.confmkdir -p /etc/nginx/conf.d/
touch kgc.conf benet.conf#定義www.kgc.com
vim /etc/nginx/conf.d/kgc.conf server{
listen 80;
server_name www.kgc.com;
root /usr/share/nginx/html;
index index.html index.htm index.php;
location = /index.php {
rewrite .* http://www.kgc.com/bbs/;
}
location ~ \.php$ {root           html;fastcgi_pass   127.0.0.1:9000;fastcgi_index  index.php;fastcgi_param  SCRIPT_FILENAME /usr/share/nginx/html$fastcgi_script_name;include        fastcgi_params;}
}#定義www.benet.com域名
vim /etc/nginx/conf.d/benet.confserver{
listen 80;
server_name www.benet.com;
root /var/www/html;
}vim /var/www/html/index.htmlni hao zhe li shi benetnginx -t &&nginx -s reload

如果想使用真機瀏覽器訪問www.benet.com或者www.kgc.com:

訪問結果:

要求3

vim /etc/nginx/conf.d/benet.conf#http模塊下
server_tokens off;
expires 1d;
server{
listen 80;
server_name www.benet.com;
root /var/www/html;
location ~* \.(jpg|gif|swf|jpeg|bmp)$ {
root  /var/www/html;
valid_referers none blocked *.kgc.com kgc.com;
if ( $invalid_referer ) {
rewrite ^/ http://www.benet.com/error.jpg;
#return   403;
}
}
location = /error.jpg {
root /var/www/html;
}
}cd /var/www/html
創建a.jpg;error.jpg文件可以使用其他帶有nginx服務器的設備
vim /.../nginx/html/index.html
<img src="http://被盜圖的IP地址/a.jpg"/>

訪問www.benet.com/a.jpg,再訪問新的nginx設備

改變配置文件為返回403狀態碼。

要求4

網關服務器:
vgcreate lvm /dev/sdb /dev/sdc /dev/sdd
lvcreate -n lvm -L 35G lvm
mkfs.xfs /dev/lvm/lvm
mkdir /opt/lvm
mount /dev/lvm/lvm /opt/lvmvim /etc/exports
/opt/lvm *(rw)exportfs -r
exportfs -v
chmod 777 /opt/lvm 
systemctl restart nfs nginx服務器:mkdir /opt/lvm
mount 192.168.174.190:/opt/lvm /opt/lvm
vim access.sh#制作腳本#!/bin/bash
y=`date | awk '{print $2}'`
mkdir /opt/lvm/$y &> /dev/null
if [ -e /var/log/nginx/access.log ]
thenmv /var/log/nginx/access.log /opt/lvm/${y}/`date +%F`-access.log &> /dev/nulltouch /var/log/nginx/access.logkill -USR1 `cat /run/nginx.pid`
ficrontab -e#制作定時任務,可以先制作一個每2分鐘就執行的定時任務進行實驗
55 23 * * * /usr/bin/bash /opt/access.sh
crontab -l#查看定時任務

要求5

vim /etc/nginx/conf.d/kgc.conflocation /test {
alias /var/share/nginx/html/;
}mkdir -p /var/share/nginx/html
vim /var/share/nginx/html/a.html
{自定義}nginx -s reload

vim /etc/nginx/conf.d/benet.conf#server模塊下
location ~* \.php$ {
rewrite /(.*)  http://www.kgc.com/$1;
}nginx -s reload

訪問:

得到:

要求6

nginx服務器上:
vim /etc/nginx/conf.d/benet.conf
#http模塊下
upstream web {
server 192.168.174.103;
server 192.168.174.102;
}
...
#server模塊下
location ~* \.txt$ {
proxy_pass http://web/;
}nginx -s reloadtomcat服務器上:
vim /usr/share/nginx/html/1.txt
{自定義}

要求7

配置網關服務雙網卡:

vim /etc/sysconfig/network-scripts/ifcfg-ens33TYPE="Ethernet"
PROXY_METHOD="none"
BROWSER_ONLY="no"
BOOTPROTO="static"
DEFROUTE="yes"
IPV4_FAILURE_FATAL="no"
IPV6INIT="yes"
IPV6_AUTOCONF="yes"
IPV6_DEFROUTE="yes"
IPV6_FAILURE_FATAL="no"
IPV6_ADDR_GEN_MODE="stable-privacy"
NAME="ens33"
UUID="fd7d808c-0292-4c69-93e5-b301eaa9e1c7"
DEVICE="ens33"
ONBOOT="yes"
IPADDR=192.168.174.190
NETMASK=255.255.255.0
GATEWAY=192.168.174.190
DNS1=114.114.114.114vim /etc/sysconfig/network-scripts/ifcfg-ens36TYPE="Ethernet"
PROXY_METHOD="none"
BROWSER_ONLY="no"
BOOTPROTO="static"
DEFROUTE="yes"
IPV4_FAILURE_FATAL="no"
IPV6INIT="yes"
IPV6_AUTOCONF="yes"
IPV6_DEFROUTE="yes"
IPV6_FAILURE_FATAL="no"
IPV6_ADDR_GEN_MODE="stable-privacy"
NAME="ens36"
DEVICE="ens36"
ONBOOT="yes"
IPADDR=12.0.0.100
NETMASK=255.255.255.0
GATEWAY=12.0.0.100
DNS1=114.114.114.114

配置client服務器(僅本地):

vim /etc/sysconfig/network-scripts/ifcfg-esn33TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=static
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=ens33
UUID=e50fd064-465c-4451-81f8-4d9f81ee27d3
DEVICE=ens33
NBOOT=yes
IPADDR=12.0.0.105
NETMASK=255.255.255.0
GATEWAY=12.0.0.100
DNS1=114.114.114.114

網關服務器配置:

sysctl -a | grep ip_forward#查看路由轉發是否打開vim /etc/sysctl.confnet.ipv4.ip_forward = 1sysctl -piptables -t nat -A POSTROUTING -s 12.0.0.0/24 -j SNAT --to 192.168.174.190

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

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

相關文章

Spring Boot 與 RabbitMQ 的深度集成實踐(一)

引言 ** 在當今的分布式系統架構中&#xff0c;隨著業務復雜度的不斷提升以及系統規模的持續擴張&#xff0c;如何實現系統組件之間高效、可靠的通信成為了關鍵問題。消息隊列作為一種重要的中間件技術&#xff0c;應運而生并發揮著舉足輕重的作用。 消息隊列的核心價值在于其…

c++多線程debug

debug demo 命令行查看 ps -eLf|grep cam_det //查看當前運行的輕量級進程 ps -aux | grep 執行文件 //查看當前運行的進程 ps -aL | grep 執行文件 //查看當前運行的輕量級進程 pstree -p 主線程ID //查看主線程和新線程的關系 查看線程棧結構 pstack 線程ID 步驟&…

10.7 LangChain v0.3架構大升級:模塊化設計+多階段混合檢索,開發效率飆升3倍!

LangChain v0.3 技術生態與未來發展 關鍵詞:LangChain Chains, Agents 架構, Retrieval Strategy, LangGraph, 模塊化設計 3. LangChain 項目:Chains, Agents, Retrieval Strategy LangChain v0.3 通過 Chains-Agents-Retrieval 三位一體的技術棧,構建起完整的大模型應用開…

分布式 ID 生成的五種方法:優缺點與適用場景

0.簡介 在分布式系統中&#xff0c;生成全局唯一的id是一個常見的需求。由于分布式系統的特性&#xff08;多節點&#xff0c;網絡分區&#xff0c;時鐘不同步等&#xff09;&#xff0c;傳統的單機ID生成方式不再適用&#xff0c;所以一些分布式生成方式應運而生&#xff0c;…

基于單片機路燈自動控制儀仿真設計

標題:基于單片機路燈自動控制儀仿真設計 內容:1.摘要 本設計旨在解決傳統路燈控制方式效率低、能耗大的問題&#xff0c;開展了基于單片機的路燈自動控制儀仿真設計。采用單片機作為核心控制單元&#xff0c;結合光照傳感器、時鐘模塊等硬件&#xff0c;運用相關軟件進行編程和…

計算機網絡-MPLS VPN基礎概念

前面幾篇文章我們學習了MPLS的標簽轉發原理&#xff0c;有靜態標簽分發和LDP動態標簽協議&#xff0c;可以實現LSR設備基于標簽實現數據高效轉發。現在開始學習MPLS在企業實際應用的場景-MPLS VPN。 一、MPLS VPN概念 MPLS&#xff08;多協議標簽交換&#xff09;位于TCP/IP協…

LWIP的Socket接口

Socket接口簡介 類似于文件操作的一種網絡連接接口&#xff0c;通常將其稱之為“套接字”。lwIP的Socket接口兼容BSD Socket接口&#xff0c;但只實現完整Socket的部分功能 netconn是對RAW的封裝 Socket是對netconn的封裝 SOCKET結構體 struct sockaddr { u8_t sa_len; /* 長…

windows 安裝gdal實現png轉tif,以及柵格拼接

windows 安裝gdal實現png轉tif&#xff0c;以及柵格拼接 一、安裝gdal 網上有很多安裝gdal的方法&#xff0c;此處通過osgeo4w安裝gdal 1.下載osgeo4w 下載地址 https://trac.osgeo.org/osgeo4w/ 2、安裝osgeo4w exe文件安裝&#xff0c;前面部分很簡單&#xff0c;就不再…

Node.js 源碼概覽

Node.js 是一個基于 Chrome V8 引擎的 JavaScript 運行時環境&#xff0c;它的源碼結構相當龐大且復雜。下面我將為你講解 Node.js 源碼的主要結構和關鍵組成部分。 源碼結構 Node.js 的主要源碼目錄結構如下&#xff1a; node/ ├── lib/ # JavaScript 核心模…

Linux :線程 【生產者消費者模型】

Linux &#xff1a;線程 【生產者消費者模型與信號量】 &#xff08;一&#xff09;生產消費模型1、生產消費模式概念2、生產者消費者之間的關系3、生產者消費者模型優點 &#xff08;二&#xff09;基于BlockingQueue的生產者消費者模型1、基于阻塞隊列模型2、模擬實現基于阻塞…

mac本地docker鏡像上傳指定虛擬機

在Mac本地將Docker鏡像上傳至指定虛擬機的完整步驟 1. 在Mac本地保存Docker鏡像為文件 通過docker save命令將鏡像打包為.tar文件&#xff0c;便于傳輸至虛擬機。 # 示例&#xff1a;保存名為"my_image"的鏡像到當前目錄 docker save -o my_image.tar my_image:ta…

C++跨平臺開發經驗與解決方案

在當今軟件開發領域&#xff0c;跨平臺開發已成為一個重要的需求。C作為一種強大的系統級編程語言&#xff0c;在跨平臺開發中扮演著重要角色。本文將分享在實際項目中的跨平臺開發經驗和解決方案。 1. 構建系統選擇 CMake的優勢 跨平臺兼容性好 支持多種編譯器和IDE 強大…

Void: Cursor 的開源平替

GitHub&#xff1a;https://github.com/voideditor/void 更多AI開源軟件&#xff1a;發現分享好用的AI工具、AI開源軟件、AI模型、AI變現 - 小眾AI Void&#xff0c;這款編輯器號稱是開源的 Cursor 和 GitHub Copilot 替代品&#xff0c;而且完全免費&#xff01; 在你的代碼庫…

基于HTML+JavaScript+CSS實現教學網站

摘要 21世紀是信息化的時代&#xff0c;信息化物品不斷地涌入我們的生活。同時&#xff0c;教育行業也產生了重大變革。傳統的身心教授的模式&#xff0c;正在被替代。互聯網模式的教育開辟了一片新的熱土。 這算是對教育行業的一次重大挑戰。截至目前&#xff0c;眾多教育行…

基于ssm+mysql的高校設備管理系統(含LW+PPT+源碼+系統演示視頻+安裝說明)

系統功能 管理員功能&#xff1a;系統登錄、員工管理、設備管理、設備采購統計、設備報廢統計&#xff1b;用戶角色功能&#xff1a;設備采購管理、設備報廢管理、個人資料管理。 作者&#xff1a;計算機搬磚家 開發技術&#xff1a;SpringBoot、php、Python、小程序、SSM、Vu…

電力桿塔安全監測解決方案

一、方案背景 在臺風、滑坡等自然災害出現時&#xff0c;極易產生倒桿、斷桿、桿塔傾斜、塔基滑動等致使桿塔失穩的狀況&#xff0c;進而引發導線斷線、線路跳閘等事故&#xff0c;給電網的安全穩定運行造成影響。可借助在鐵塔上裝設的傳感器&#xff0c;能夠感知鐵塔的工作狀態…

基于Quicker構建從截圖到公網圖像鏈接獲取的自動化流程

寫在前面&#xff1a;本博客僅作記錄學習之用&#xff0c;部分圖片來自網絡&#xff0c;如需引用請注明出處&#xff0c;同時如有侵犯您的權益&#xff0c;請聯系刪除&#xff01; 文章目錄 前言預備內容轉webp程序PicGo設置Quicker設置視頻演示總結互動致謝參考 前言 在自建博…

Python Requests庫完全指南:從入門到精通

引言 在Python的生態系統中&#xff0c;requests庫以其簡潔優雅的API設計和強大的功能&#xff0c;成為HTTP請求處理領域的標桿工具。無論是數據爬蟲開發、API接口調用&#xff0c;還是自動化測試場景&#xff0c;requests都能將復雜的網絡交互簡化為幾行可讀性極高的代碼。相…

滲透測試核心技術:內網滲透與橫向移動

內網滲透是紅隊行動的關鍵階段,攻擊者通過突破邊界進入內網后,需快速定位域控、橫向移動并維持權限。本節從內網環境搭建、信息收集、橫向移動技巧到權限維持工具,系統講解如何在內網中隱蔽行動并擴大戰果。 1. 內網環境搭建與基礎配置 目標: 模擬真實企業網絡,構建包含…

學習FineBI

FineBI 第一章 FineBI 介紹 1.1. FineBI 概述 FineBI 是帆軟軟件有限公司推出的一款商業智能 &#xff08;Business Intelligence&#xff09; 產品 。 FineBI 是新一代大數據分析的 BI 工具 &#xff0c; 旨在幫助企業的業務人員充分了解和利用他們的數據 。FineBI 憑借強…