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/

开始访问

安装成功

论坛搭建成功

相关推荐
玄武 剑6 分钟前
开源自动化热键映射工具autohotkey十大用法及精选脚本
运维·自动化
登云时刻7 分钟前
【问题记录】Jenkins Pipeline读取变量的各种方法
运维·jenkins
weishenjieneng11 分钟前
微深节能 煤码头自动化翻堆及取料集控系统 格雷母线
运维·自动化
威斯盾科技17 分钟前
电力设备巡检管理系统
运维·网络·信息可视化
zhishengwangxiao20 分钟前
职升网:一级计量师证书含金量有多少?
运维·服务器
科学的发展-只不过是读大自然写的代码30 分钟前
ubuntu 进入命令行
linux·运维·ubuntu
念晚91734 分钟前
Linux——测网速例子,在网站查看生成的图片
linux·运维·服务器·网络·数据库
运维Linux和python43 分钟前
从nginx返回404来看http1.0和http1.1的区别
运维·nginx
-Se7ven1 小时前
Linux修改服务器hostname方法
linux·服务器·github
xjt_09011 小时前
在 Windows PowerShell 中模拟 Unix/Linux 的 touch 命令
linux·服务器·unix