nginx.conf配置文件

1、全局模块

worker_processes 1;

工作进程数,一般设置成服务器内核数的2倍(一般不超过8个,超过8个反而会降低性能,一般是4个,1-2个也可以)

处理进程的过程必然涉及配置文件和展示页面,也就是涉及打开文件的数量

linux默认打开的文件数是1024个

修改最大文件数 /etc/security/limits.conf

 alias和root之间匹配工作目录的区别:

root的匹配模式是拼接

root的工作目录/opt/test1,访问的uri /xy102

location /xy102

工作目录/opt/test1

访问的是/opt/test1/xy102

alias匹配nginx的工作目录,路径是绝对路径

location /xy102

alias /opt/test1/xy102/;

alias只能写在http模块当中server模块的location模块当中

root可以写在server模块,也可以在http,也可以在location

使用alias匹配工作目录不能够使用重定向功能

2、events模块

events {

​       workers_connections 1024;

}

决定了nginx能够处理的连接数,连接数和worker_processes的数值相乘

3、stream四层代理模块

4、http模块

转发和处理http请求,设置代理(正向代理,反向代理),缓存,定义日志格式,重定向配置 

在http模块当中,包含:

server模块,http里面可以有多个server模块

在server模块当中包含:location模块

在server当中可以有多个location

5、实验

5.1统计访问状态

修改配置文件

 各行的含义:

Active connections 当前活动的连接数

server accepts handled requests 表示已经处理的连接数

2 2 21

从左往右表示已经处理的连接数,成功建立连接的次数,已经处理的请求数

Reading:0 writing:1 waiting:1

reading:表示服务端正在从客户端读取请求的数据

writing:表示服务端正在把响应数据发送给客户端

waiting:表示有连接处于空闲状态,等待新的请求

5.2基于密码的授权进行访问控制

先安装httpd-tools,htpasswd的工具

 生成一个passwd.db的文件,用户abc可以对这个文件进行处理,设置密码为123

 将passwd.db的所有者改为nginx,并修改权限为400

 修改配置文件

 加密用户才可以访问

5.3基于客户端的访问控制

根据ip地址进行控制

拒绝192.168.233.62访问,允许其他所有访问

5.4基于域名的nginx的主机

修改配置文件

 vim /etc/hosts做一个本地映射

 访问成功

多个server,修改配置文件

 

 本地映射

访问成功

5.5基于ip地址的虚拟主机

创建虚拟网卡

 更改监听地址

 访问成功

5.6基于端口实现多个虚拟主机

更改端口号(范围1-65535)

访问8080端口

 访问8888端口

5.7多个配置文件

进入配置文件,添加一个include

 创建conf.d目录

mkdir conf.d

 创建新的文件test1.conf,添加server作为独立的配置文件

 创建目录test1、test2

[root@localhost opt]# mkdir -p conf/test1
[root@localhost opt]# mkdir -p conf/test2

 分别在test1、test2输入内容

[root@localhost conf]# echo "this is test1" > test1/index.html
[root@localhost conf]# echo "this is test2" > test2/index.html

 访问成功

6、nginx的优化与防盗链

6.1隐藏版本号

vim nginx.conf

无版本号

6.2修改用户与组  

6.3设置页面的缓存时间,主要是针对动态页面

设置图片的缓存

6.4日志分割

apache是自带日志分割的,按天来进行收集日志

apache的日志access.log error.log

nginx没有自动分割的功能,借助脚本来实现分割

6.5更改进程数以及设置cpu绑定

6.6连接超时

 

6.7配置页面压缩

gzip on
gzip_min_length 1k;
#最小的压缩文件,小于等于1k的文件就不压缩了
gzip_buffers 4 64k;
#设置压缩的缓冲区,4个,每个缓冲区的大小为64k
gzip_comp_level 6;
#压缩比例为1-9,数字越小,压缩的比例越小,速度越快;数字越大,压缩的比例就越高,速度越慢

gzip_types text/plain text/javascript application/x-javascript text/css text/xml application/xml application/xml+rss image/jpg image/jpeg image/png image/gif application/x-httpd-php application/javascript application/json;
#支持压缩的类型

6.8回收TIME_WAIT

time_wait是tcp连接当做的一种状态,出现在四次挥手之后,处于等待状态,双方不再发送数据

time_wait所占用的系统资源很小,数量比较少,完全可以忽略不计,但是太多了就有一定的影响。

连接断开(四次挥手)之后,尽快的把time_wait状态的连接进行回收

netstat -n | awk '/^tcp/ {++s[$NF]} END {for (a in s) print a s[a]}
#统计当前系统的连接状态

 修改内核文件

 sysctl -p   

#立即生效

6.9防盗链

 vim index.html

echo "192.168.230.10 www.xy102.com" >> /etc/hosts

echo "192.168.230.20 www.xy103.com" >> /etc/hosts

7、lnmp+DIS架构

是论坛的一个服务

l:linux 操作系统

n:nginx 前端页面的web服务

php:动态请求转发的中间件

m:mysql 数据库,保存用户和密码以及论坛的相关内容

7.1安装数据库

将mysql的包拖进去,并且解压

 将包改名为mysql,移动到/usr/local

 创建mysql的程序用户

[root@localhost opt]# useradd -M -s /sbin/nologin mysql

修改所有者和所在组

[root@localhost opt]# chown -R mysql.mysql /usr/local/mysql

修改mysql主配置文件的所有者和所在组

[root@localhost opt]# chown mysql.mysql /etc/my.cnf

 修改主配置文件

vim /etc/my.cnf

 port = 3306
[client]
port = 3306
#客户端访问的端口
socket=/usr/local/mysql/mysql.sock
#指定mysql的通信套接字文件

[mysqld]
#mysql的安装目录
datadir=/usr/local/mysql/data
#mysql数据保存的目录
port = 3306
character-set-server=utf8
#字符集的编码
pid-file = /usr/local/mysql/mysqld.pid
socket=/usr/local/mysql/mysql.sock
bind-address = 0.0.0.0
#任意地址都可以访问数据库
skip-name-resolve
max_connections=2048
default-storage-engine=INNODB
#mysql默认的存储引擎
max_allowed_packet=16M
server-id = 1
sql_mode = STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION
#mysql支持的数据类型和相关的模块

 将文件放到/etc/profile里,让系统可以识别

echo "PATH=$PATH:/usr/local/mysql/bin" >> /etc/profile

 source /etc/profile

 初始化数据库

./mysqld \
--initialize-insecure \
--user=mysql \
--basedir=/usr/local/mysql \
--datadir=/usr/local/mysql/data

 将文件复制到mysqld

 给一个执行权限

chmod +x /etc/init.d/mysqld

 读取配置文件,重启mysqld

systemctl daemon-reload

systemctl restart mysqld

 查看是否有3306这个端口

 初始化数据库的密码

数据库安装完毕

 

 在数据库中创建用户

mysql> create user 'root'@"%" identified by '123456';

Query OK, 0 rows affected (0.01 sec)

 赋权

mysql> grant all privileges on *.* to 'root'@'%';

Query OK, 0 rows affected (0.00 sec)

 刷新权限

mysql> flush privileges;

Query OK, 0 rows affected (0.00 sec)

 navicat远程登录,修改加密方式,刷新

mysql> alter user 'root'@'%' identified with mysql_native_password by "123456";
Query OK, 0 rows affected (0.00 sec)

mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)

安装php的依赖环境

 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 \
oniguruma-devel \
sqlite-devel

将php的安装包拖进来并解压

编译安装,开始配置

 ./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-pdo-mysql \
--with-openssl \
--with-sqlite-devel \
--with-oniguruma-devel \
--enable-fpm \
--enable-mbstring \
--enable-xml \
--enable-session \
--enable-ftp \
--enable-pdo \
--enable-tokenizer \
--enable-zip

 配置成功

安装

 make -j 4 && make install

 安装完成

 优化两个线路,让系统识别到

[root@nginx1 php-8.1.27]# ln -s /usr/local/php/bin/* /usr/local/bin/

[root@nginx1 php-8.1.27]# ln -s /usr/local/php/sbin/* /usr/local/sbin/

 将主配置文件php.ini-development复制到/usr/local/php/lib,改名为php.ini

cp php.ini-development /usr/local/php/lib/php.ini

 打开/usr/local/php/lib/php.ini,修改976和1181行的内容

修改进程服务的配置文件

复制php-fpm.conf.default

 打开php-fpm.conf,取消17行的注释

调整扩展配置文件

复制www.conf.default

启动php

/usr/local/php/sbin/php-fpm -c

/usr/local/php/lib/php.ini

 查看端口号

 添加系统配置

 配置nginx的动态转发

 

 <?php
phpinfo();
?>

 浏览器访问成功

 进入数据库,创建专门用来保存论坛信息的用户和库

mysql -u root -p123456

 创建库,名为bbs

create database bbs;

 

 创建用户bbsuser,任意地址都可以连接,密码为admin123

create user 'bbsuser'@'%' identified by 'admin123'

赋权,刷新

 mysql> grant all privileges on bbs.* to 'bbsuser'@'%';
Query OK, 0 rows affected (0.01 sec)

mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)

 创建本地连接用户

create user 'bbsuser'@'localhost' identified by 'admin123';

 赋权,刷新

mysql> grant all privileges on bbs.* to 'bbsuser'@'localhost';
Query OK, 0 rows affected, 1 warning (0.01 sec)

mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)

指定用户登录

 连接数据库成功

7.2安装discuz论坛

将discuz安装包拖进去,解压

unzip Discuz_X3.5_SC_UTF8.zip -d /opt/dis

 复制upload

 修改所有者所在组和权限

[root@localhost html]# chown -R nginx.nginx bbs/

[root@localhost html]# chmod -R 777 bbs/

 开始访问

安装成功

 论坛搭建成功

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/42643.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2024.7.9作业

1、提示并输入一个字符串&#xff0c;统计该字符串中字母、数字、空格以及其他字符的个数 #include <stdio.h> #include <string.h> int main(int argc,const char *argv[]) { char arr[30]{0}; int zm0,kg0,sz0,qt0; printf("请输入字符串&…

智慧光伏一站式解决方案

光伏电站智慧化管理平台&#xff0c;将现代先进的数字信息技术、通信技术、互联网技术、云计算技术、大数据挖掘技术与光伏技术高度融合而形成。可以满足光伏企业对电站的高发电量、低初始投资、低运维成本等需求&#xff0c;从开发到运维的25年生命周期内&#xff0c;实现高收…

使用clion刷leetcode

如何优雅的使用clion刷leetcode 安装插件&#xff1a;LeetCode Editor) 插件配置&#xff1a; 这样我们每打开一个项目&#xff0c;就会创建类似的文件 我们的项目结构&#xff1a; 我们在题解文件中导入头文件myHeader.h并将新建的文件添加到cmakelists.txt文件&#xff0c;…

2024前端面试真题【JS篇】

DOM DOM&#xff1a;文本对象模型&#xff0c;是HTML和XML文档的编程接口。提供了对文档的结构化的表述&#xff0c;并定义可一种方式可以使从程序中对该结构进行访问&#xff0c;从而改变文档的结构、样式和内容。 DOM操作 创建节点&#xff1a;document.createElement()、do…

了解PPO算法(Proximal Policy Optimization)

Proximal Policy Optimization (PPO) 是一种强化学习算法&#xff0c;由 OpenAI 提出&#xff0c;旨在解决传统策略梯度方法中策略更新过大的问题。PPO 通过引入限制策略更新范围的机制&#xff0c;在保证收敛性的同时提高了算法的稳定性和效率。 PPO算法原理 PPO 算法的核心…

【docker 把系统盘空间耗没了!】windows11 更改 ubuntu 子系统存储位置

系统&#xff1a;win11 ubuntu 22 子系统&#xff0c;docker 出现问题&#xff1a;系统盘突然没空间了&#xff0c;一片红 经过排查&#xff0c;发现 AppData\Local\packages\CanonicalGroupLimited.Ubuntu22.04LTS_79rhkp1fndgsc\ 这个文件夹竟然有 90GB 下面提供解决办法 步…

Spring-AOP(二)

作者&#xff1a;月下山川 公众号&#xff1a;月下山川 1、什么是AOP AOP&#xff08;Aspect Oriented Programming&#xff09;是一种设计思想&#xff0c;是软件设计领域中的面向切面编程&#xff0c;它是面向对象编程的一种补充和完善&#xff0c;它以通过预编译方式和运行期…

【课程总结】Day13(下):人脸识别和MTCNN模型

前言 在上一章课程【课程总结】Day13(上):使用YOLO进行目标检测,我们了解到目标检测有两种策略,一种是以YOLO为代表的策略:特征提取→切片→分类回归;另外一种是以MTCNN为代表的策略:先图像切片→特征提取→分类和回归。因此,本章内容将深入了解MTCNN模型,包括:MTC…

使用jdk11运行javafx程序和jdk11打包jre包含javafx模块

我们都知道jdk11是移除了javafx的,如果需要使用javafx,需要单独下载。 这就导致我们使用javafx开发的桌面程序使用jdk11时提示缺少javafx依赖。但这是可以通过下面的方法解决。 一,使用jdk11运行javafx程序 我们可以通过设置vmOptions来使用jdk11运行javafx程序 1,添加j…

【RAG KG】GraphRAG开源:查询聚焦摘要的图RAG方法

前言 传统的 RAG 方法在处理针对整个文本语料库的全局性问题时存在不足&#xff0c;例如查询&#xff1a;“数据中的前 5 个主题是什么&#xff1f;” 对于此类问题&#xff0c;是因为这类问题本质上是查询聚焦的摘要&#xff08;Query-Focused Summarization, QFS&#xff09…

嵌入式单片机,两者有什么关联又有什么区别?

在开始前刚好我有一些资料&#xff0c;是我根据网友给的问题精心整理了一份「嵌入式的资料从专业入门到高级教程」&#xff0c; 点个关注在评论区回复“666”之后私信回复“666”&#xff0c;全部无偿共享给大家&#xff01;&#xff01;&#xff01;使用单片机是嵌入式系统的…

CurrentHashMap巧妙利用位运算获取数组指定下标元素

先来了解一下数组对象在堆中的存储形式【数组长度&#xff0c;数组元素类型信息等】 【存放元素对象的空间】 Ma 基础信息实例数据内存填充Mark Word,ClassPointer,数组长度第一个元素第二个元素固定的填充内容 所以我们想要获取某个下标的元素首先要获取这个元素的起始位置…

Sorted Set 类型命令(命令语法、操作演示、命令返回值、时间复杂度、注意事项)

Sorted Set 类型 文章目录 Sorted Set 类型zadd 命令zrange 命令zcard 命令zcount 命令zrevrange 命令zrangebyscore 命令zpopmax 命令bzpopmax 命令zpopmin 命令bzpopmin 命令zrank 命令zscore 命令zrem 命令zremrangebyrank 命令zremrangebyscore 命令zincrby 命令zinterstor…

线程池案例

秒杀 需求 10个礼物20个客户抢随机10个客户获取礼物&#xff0c;另外10无法获取礼物 任务类 记得给共享资源加锁 public class MyTask implements Runnable{// 礼物列表private ArrayList<String> gifts ;// 用户名private String username;public MyTask( String user…

android Dialog全屏沉浸式状态栏实现

在Android中&#xff0c;创建沉浸式状态栏通常意味着让状态栏背景与应用的主题颜色一致&#xff0c;并且让对话框在状态栏下面显示&#xff0c;而不是浮动。为了实现这一点&#xff0c;你可以使用以下代码片段&#xff1a; 1、实际效果图&#xff1a; 2、代码实现&#xff1a;…

揭秘GPT-4o:未来智能的曙光

引言 近年来&#xff0c;人工智能&#xff08;AI&#xff09;的发展突飞猛进&#xff0c;尤其是自然语言处理&#xff08;NLP&#xff09;领域的进步&#xff0c;更是引人注目。在这一背景下&#xff0c;OpenAI发布的GPT系列模型成为了焦点。本文将详细探讨最新的模型GPT-4o&a…

Unity海面效果——6、反射和高光

Unity引擎制作海面效果 大家好&#xff0c;我是阿赵。 上一篇的结束时&#xff0c;海面效果已经做成这样了&#xff1a; 这个Shader的复杂程度已经比较高了&#xff1a; 不过还有一些美中不足的地方。 1、 海平面没有反射到天空球 2、 在近岸边看得到水底的部分&#xff0c;水…

一些关于C++的基础知识

引言&#xff1a;C兼容C的大部分内容&#xff0c;但其中仍有许多小细节的东西需要大家注意 一.C的第一个程序 #include <iostream> using namespace std;int main() {cout << "hello world!" << endl;return 0; } 第一次看这个是否感觉一头雾水…

数据挖掘——matplotlib

matplotlib概述 Mat指的是Matlab&#xff0c;plot指的是画图&#xff0c;lib即library&#xff0c;顾名思义&#xff0c;matplotlib是python专门用于开发2D图表的第三方库&#xff0c;使用之前需要下载该库&#xff0c;使用pip命令即可下载。 pip install matplotlib1、matpl…

elasticsearch SQL:在Elasticsearch中启用和使用SQL功能

❃博主首页 &#xff1a; 「码到三十五」 &#xff0c;同名公众号 :「码到三十五」&#xff0c;wx号 : 「liwu0213」 ☠博主专栏 &#xff1a; <mysql高手> <elasticsearch高手> <源码解读> <java核心> <面试攻关> ♝博主的话 &#xff1a…