首页 > 系统相关 >08@nginx服务搭建及文件配置

08@nginx服务搭建及文件配置

时间:2022-10-09 23:31:28浏览次数:58  
标签:配置文件 Nginx 08 etc nginx web01 root 搭建


文章目录

Nginx web

PHP

一、Nginx概述

1.nginx 简述

*Nginx* (engine x)
Nginx是一个开源且高性能、可靠的Http Web服务、代理服务。
开源: 直接获取源代码
高性能: 支持海量并发
可靠: 服务稳定

2.其他相关的web服务

1>.apache(httpd):早期使用,性能不高,上手很难;

2>.nginx
Tengine:淘宝基于nginx进行二次开发的产物
openresty:基于nginx与lua的高性能web平台

3>.lighttpd:消耗的内存和cpu较低,性能好,还有很多模块

4>.IIS:windows的web服务

5>.GWS:google web server

6>.BWS:baidu web server

3.nginx特点

1).高性能、高并发:
在并发特别高的时候,nginx的响应速度比其他的web服务快很多。

2).轻量且高扩展性:
1》.轻量:功能模块少,仅保留http模块和核心模块
2》.高扩展性:模块需要哪个可以装哪个,还可以集成第三方的模块

3).高可靠性:
其他的web服务运行一段时间需要重启,nginx不需要
nginx的宕机时间 9999、99999级别


4).支持热部署

可以在不停服务的情况下进行升级
nginx的master管理进程和worker的工作进程是分离的

5).互联网公司都在用nginx,应用广泛
nginx技术成熟,具备企业里所有需要的功能,负载,缓存,安全,web服务
统一技术栈,降低维护成本,降低技术难度

6).Nginx使用Epool网络模型
select:当用户发起一次请求,select模型就会进行一次遍历扫描,从而导 致性能低下;
Epoll:当用户发起请求,epoll模型会直接进行处理,效率高效,并无连接 限制

08@nginx服务搭建及文件配置_服务器

静态服务器:不需要服务器做特殊处理的代码就是静态资源。(html、图片、音频、视频)
代理服务器:将一个服务的请求转移另一个服务。
安全服务器:nginx做安全需要LUA脚本语言配合使用。

二、Nginx和Apache

Nginx出现以前,Apache几乎是WEB服务器行业的垄断地位,后来逐渐被Nginx给替代了。

Nginx使用网络模型epool
Apache使用的是select

小明 ---> 小花 select
小明 --->

三、部署Nginx

部署Nginx常用的三种?

1.epel源安装

# 安装epel源
[root@web01 ~]# vim /etc/yum.repos.d/epel.repo
[epel]
name='this is epel repo'
baseurl=https://repo.huaweicloud.com/epel/7/x86_64/
gpgcheck=0

[root@web01 ~]# yum clean all
[root@web01 ~]# yum makecache

# 安装nginx
[root@web01 ~]# yum install nginx --nogpgcheck
[root@web01 ~]# systemctl start nginx

08@nginx服务搭建及文件配置_php_02

2.官方yum源

# 安装官方源
## nginx.org ---> documentation ---> Installing nginx ---> packages ---> RHEL/CentOS

[root@web02 ~]# vim /etc/yum.repos.d/nginx.repo
[nginx-stable]
name=nginx stable repo
baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
gpgcheck=1
enabled=1
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true

[nginx-mainline]
name=nginx mainline repo
baseurl=http://nginx.org/packages/mainline/centos/$releasever/$basearch/
gpgcheck=1
enabled=0
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true

# 安装启动服务
[root@web02 ~]# yum install nginx -y
[root@web02 ~]# nginx
[root@web02 ~]# systemctl start nginx
#检查启动

#方式一:
[root@web01 ~]# systemctl status nginx

#方式二:
[root@web01 ~]# ps -ef | grep [n]ginx

#方式三:
[root@web01 ~]# netstat -lntp

#方式四:
访问页面 10.0.0.7

#方式五:
[root@web01 ~]# curl 10.0.0.7

#方式六:
[root@web01 ~]# nginx -v
#nginx常用命令
1.nginx启动
#方法一:
[root@web01 ~]# nginx
#方法二:
[root@web01 ~]# systemctl start nginx

#注意:使用什么方式启动,就是用什么方式管理,不要混着用
2.nginx停止
#方法一:
[root@web01 ~]# nginx -s stop
#方法二:
[root@web01 ~]# systemctl stop nginx

3.nginx重启
[root@web01 ~]# systemctl restart nginx

4.nginx重新加载配置文件
#方法一:
[root@web01 ~]# nginx -s reload
#方法二:
[root@web01 ~]# systemctl reload nginx

5.检查nginx配置
[root@web01 ~]# nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

6.加入开机自启
[root@web01 ~]# systemctl enable nginx



#Centos6
nginx
/etc/init.d/nginx start
service nginx start
chkconfig

08@nginx服务搭建及文件配置_php_03

3.源码包编译安装

# 下载源码包
# nginx.org ---> download ---> 下载Mainline version
[root@web03 opt]# wget http://nginx.org/download/nginx-1.19.10.tar.gz

# 解压安装包
[root@web03 opt]# tar -xf nginx-1.19.10.tar.gz

#创建用户
[root@web03 opt] # groupadd www -g 666
[root@web03 opt]# useradd www -u 666 -g 666


#检测生成
[root@web03 opt]# cd nginx-1.19.10/
[root@web03 nginx-1.19.10]# ./configure --prefix=/usr/local/nginx-1.19.10



# 编译二进制文件并安装
[root@web03 nginx-1.19.10]# make -j
[root@web03 nginx-1.19.10]# make install
[root@web03 nginx-1.19.10]# ln -s /usr/local/nginx-1.19.10 /usr/local/nginx

[root@web03 nginx-1.19.10]# cd /usr/local/
[root@web03 local]# ll
total 0
drwxr-xr-x. 6 root root 54 Apr 26 23:55 nginx-1.19.10



# 优化——在/etc/profile中添加变量
export NGINX_HOME=/usr/local/nginx-1.19.10
PATH=$PATH:$NGINX_HOME/sbin
export PATH


#启动nginx
#启动的时候没有办法使用systemctl管理

[root@web03 local]# vim /usr/lib/systemd/system/nginx.service
[Unit]
Description=nginx - high performance web server
After=network.target remote-fs.target nss-lookup.target

[Service]
Type=forking
ExecStart=/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
ExecReload=/usr/local/nginx/sbin/nginx -s reload
ExecStop=/usr/local/nginx/sbin/nginx -s stop

[Install]
WantedBy=multi-user.target

三、nginx升级

#升级版本
[root@web01 ~]# wget http://nginx.org/download/nginx-1.17.8.tar.gz
[root@web01 ~]# tar xf nginx-1.17.8.tar.gz
[root@web01 ~]# cd nginx-1.17.8/
[root@web01 nginx-1.17.8]# ./configure --prefix=/usr/local/nginx-1.17.8 --user=www --group=www --with-http_addition_module --with-http_auth_request_module
[root@web01 nginx-1.17.8]# make && make install
[root@web01 nginx-1.17.8]# rm -rf /usr/local/nginx && ln -s /usr/local/nginx-1.17.8 /usr/local/nginx

------------------------------------------------------------

#添加模块
[root@web01 ~]# cd nginx-1.16.1/
[root@web01 nginx-1.16.1]# ./configure --prefix=/usr/local/nginx-new-1.16.1 --user=www --group=www --with-http_addition_module --with-http_auth_request_module --with-http_mp4_module
[root@web01 nginx-1.16.1]# make && make install
[root@web01 nginx-1.16.1]# rm -rf /usr/local/nginx && ln -s /usr/local/nginx-new-1.16.1 /usr/local/nginx

四、Nginx的使用

# 配置文件/etc/nginx.conf
## yum安装:/etc/nginx
## 源码包安装:安装家目录的conf文件夹中
# ---------- 全局配置(全局生效) ------------------
user nginx; # 启动nginx work进程的用户名
worker_processes auto; # 启动的worker进程数(auto默认跟cpu数量相同)

error_log /var/log/nginx/error.log notice; # 错误日志路径
pid /var/run/nginx.pid; # PID 文件路径

# ---------- 系统事件配置模块(全局生效)-----------------------
events { # 事件配置模块
worker_connections 1024; # 最大连接数
use epool; # 指定网络模型(select、pool、epool)
}

# ---------- HTTP 请求模块(处理HTTP请求的模块)
http { # 模块名称
include /etc/nginx/mime.types; # nginx可以处理的文件类型
default_type application/octet-stream; # 默认的文件类型

log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"'; # 设置日志的格式

access_log /var/log/nginx/access.log main; # 访问日志

# TCP连接配置
sendfile on;
#tcp_nopush on;

# 长链接配置
keepalive_timeout 65;

# gzip压缩
#gzip on;

# 包含其他文件
include /etc/nginx/conf.d/*.conf;

server { # 每一个Server就是一个网站
listen 80; # 监听的端口
server_name localhost; # 域名

#access_log /var/log/nginx/host.access.log main; # 访问日志

location / { # 位置(指定访问的站点)
root /usr/share/nginx/html; # 指定的站点目录
index index.html index.htm; # 指定索引文件
}
}
}


# 基本命令
nginx -h : 帮助信息
-v : 展示版本信息
-V :展示版本信息及模块配置信息
-t : 检查配置文件是否正确
-q : 指定配置项,并启动
-s : 指定nginx启动方式
-c : 指定配置文件路径
-e :

五、nginx相关配置文件

#查看nginx相关配置文件
[root@web01 ~]# rpm -ql nginx

1.Nginx主配置文件

路径

类型

作用

/etc/nginx/nginx.conf

配置文件

nginx主配置文件

/etc/nginx/conf.d/default.conf

配置文件

默认网站配置文件

2.Nginx代理相关参数文件

路径

类型

作用

/etc/nginx/fastcgi_params

配置文件

Fastcgi代理配置文件(php)

/etc/nginx/scgi_params

配置文件

scgi代理配置文件

/etc/nginx/uwsgi_params

配置文件

uwsgi代理配置文件(python)

3.Nginx编码相关配置文件

路径

类型

作用

/etc/nginx/win-utf

配置文件

Nginx编码转换映射文件

/etc/nginx/koi-utf

配置文件

Nginx编码转换映射文件

/etc/nginx/koi-win

配置文件

Nginx编码转换映射文件

/etc/nginx/mime.types

配置文件

Content-Type与扩展名

4.Nginx管理相关命令

路径

类型

作用

/usr/sbin/nginx

命令

Nginx命令行管理终端工具

/usr/sbin/nginx-debug

命令

Nginx命令行与终端调试工具

5.Nginx日志相关目录与文件

路径

类型

作用

/var/log/nginx

目录

Nginx默认存放日志目录

/etc/logrotate.d/nginx

配置文件

Nginx默认的日志切割

六、Nginx的配置文件详解

web网站,nginx是支持多站点的服务的。

Nginx主配置文件/etc/nginx/nginx.conf是一个纯文本类型的文件,整个配置文件是以区块的形式组织的。一般,每个区块以一对大括号{}来表示开始与结束,{} 内每行以 ; 结尾。

Nginx主配置文件整体分为三块进行学习,分别是CoreModule(核心模块),EventModule(事件驱动模块),HttpCoreModule(http内核模块)
#---------------------------------核心模块-----------------------------
#启动用
user nginx;
#工作进程数量
worker_processes 1;
#错误日志 debug/info/notice/warn/error/crit/alter/emerg
error_log /var/log/nginx/error.log warn;
#pid文件
pid /var/run/nginx.pid;

#-----------------------------事件驱动模块-------------------------
events {
worker_connections 1024;
}

#-----------------------------http内核模块--------------------------
http {
#nginx包含的文件类型
include /etc/nginx/mime.types;
#nginx默认不识别的文件类型直接下载
default_type application/octet-stream;
#日志格式
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
#日志格式调用
access_log /var/log/nginx/access.log main;
#优化部分
sendfile on;
#tcp_nopush on;

#保持长连接
keepalive_timeout 65;
tcp_nodelay on;

#是否开启压缩
#gzip on;

#包含配置文件
include /etc/nginx/conf.d/*.conf;

#使用server配置网站,每个server代表一个网站(我们称之为虚拟主机)
server {
#监听端口
listen 80;
#提供的域名
server_name _;

#控制网站访问路径
location / {
#站点目录,指定存放页面的地址
root /code;
#默认访问的页面
index index.html
}
}
...
server {
...
}
}

七、Nginx模块配置设定详解

1.Nginx基于域名代理多个站点

# web01: /etc/nginx/conf.d/web01.conf
server {

listen 80;
server_name www.web01.com;
location / {
root /usr/share/nginx/web01/;
index index.html;
}
}

# web02:/etc/nginx/conf.d/web02.conf
server {

listen 80;
server_name www.web02.com;
location / {
root /usr/share/nginx/web02/;
index index.html;
}

}

08@nginx服务搭建及文件配置_服务器_04

2.线上域名

# 购买域名 ---> 备案域名 ---> 解析

08@nginx服务搭建及文件配置_php_05

# 域名解析

3.Nginx基于IP的多个站点

# web01: /etc/nginx/conf.d/web01.conf
server {

listen 80;
server_name 192.168.1.8:80;
location / {
root /usr/share/nginx/web01/;
index index.html;
}
}

# web02:/etc/nginx/conf.d/web02.conf
server {

listen 80;
server_name 172.16.1.8:80;
location / {
root /usr/share/nginx/web02/;
index index.html;
}

}

4.基于多端口的多站点

# web01: /etc/nginx/conf.d/web01.conf
server {

listen 8080;
server_name localhost;
location / {
root /usr/share/nginx/web01/;
index index.html;
}
}

# web02:/etc/nginx/conf.d/web02.conf
server {

listen 8090;
server_name localhost;
location / {
root /usr/share/nginx/web02/;
index index.html;
}

}

08@nginx服务搭建及文件配置_nginx_06

5、Nginx排错检查

08@nginx服务搭建及文件配置_运维_07

6、Nginx日志

nginx运行过程中,会留下很多日志。每访问一次就会生成一条日志。

log_format access_json '{"@timestamp":"$time_iso8601",'
'"host":"$server_addr",'
'"clientip":"$remote_addr",'
'"size":$body_bytes_sent,'
'"responsetime":$request_time,'
'"upstreamtime":"$upstream_response_time",'
'"upstreamhost":"$upstream_addr",'
'"http_host":"$host",'
'"url":"$uri",'
'"domain":"$host",'
'"xff":"$http_x_forwarded_for",'
'"referer":"$http_referer",'
'"status":"$status"}';

access_log /var/log/nginx/access.log access_json;



$remote_addr # 记录客户端IP地址
$remote_user # 记录客户端用户名
$time_local # 记录通用的本地时间
$time_iso8601 # 记录ISO8601标准格式下的本地时间
$request # 记录请求的方法以及请求的http协议
$status # 记录请求状态码(用于定位错误信息)
$body_bytes_sent # 发送给客户端的资源字节数,不包括响应头的大小
$bytes_sent # 发送给客户端的总字节数
$msec # 日志写入时间。单位为秒,精度是毫秒。
$http_referer # 记录从哪个页面链接访问过来的
$http_user_agent # 记录客户端浏览器相关信息
$http_x_forwarded_for #记录经过的所有服务器的IP地址
$X-Real-IP #记录起始的客户端IP地址和上一层客户端的IP地址
$request_length # 请求的长度(包括请求行, 请求头和请求正文)。
$request_time # 请求花费的时间,单位为秒,精度毫秒
# 注:如果Nginx位于负载均衡器,nginx反向代理之后, web服务器无法直接获取到客 户端真实的IP地址。
# $remote_addr获取的是反向代理的IP地址。 反向代理服务器在转发请求的http头信息中,
# 增加X-Forwarded-For信息,用来记录客户端IP地址和客户端请求的服务器地址。

7、日志的切割

logrotate:/etc/logrotate.d/

[root@web03 local]# pwd
/etc/logrotate.d/
[root@web03 local]# cat nginx
/var/log/nginx/*.log {
daily # 切割日志的时间
missingok # 忽略错误
rotate 52 # 日志最多存放52次
compress # 使用gzip压缩
delaycompress # 延时压缩
notifempty # 不处理空文件
create 640 nginx adm# 定义日志的权限
sharedscripts # 开始执行脚本
postrotate # 标注脚本内容
if [ -f /var/run/nginx.pid ]; then
kill -USR1 `cat /var/run/nginx.pid`
fi
endscript # 结束
}

八、nginx + php 编译安装

#1、下载安装包
wget https://www.php.net/distributions/php-5.6.40.tar.gz

#2、解压并检查和设置参数
[root@web02 opt]# tar -xf php-5.6.40.tar.gz
[root@web02 php-5.6.40]# ./configure --with-mysql --enable-fpm

#3、编译
[root@web02 opt]# make -j

#4、安装
[root@web02 opt]# make install

#5、处理配置文件
[root@web02 php-5.6.40]# mv php.ini-development /usr/local/lib/php.ini
[root@web02 php-5.6.40]# php --ini
Configuration File (php.ini) Path: /usr/local/lib
Loaded Configuration File: /usr/local/lib/php.ini
Scan for additional .ini files in: (none)
Additional .ini files parsed: (none)

#6、检查测试安装状态
[root@web02 php-5.6.40]# php -m 或者 php-fpm -m
[PHP Modules]
mysql
bcmath
cgi-fcgi
Core
ctype
curl
date
dom
ereg
filter

....
..
.

九、nginx web页面搭建小游戏

#1.编写配置文件

[root@web01 ~]# vim /etc/nginx/conf.d/www.hzl.conf
server {
listen 80;
server_name www.hzl.com;

location / {
root /code;
index index.html;
}
}


#2.创建站点目录
[root@web01 ~]# mkdir /code
[root@web01 ~]# chown www.www -R /code

#3.上传代码包
[root@web01 ~]# cd /code/
[root@web01 code]# rz mario.zip
[root@web01 code]# unzip mario.zip
[root@web01 code]# cp -r html/* ./



#4.重载nginx
[root@web01 code]# nginx -s reload 注:以什么方式启动的就以什么方式管理
[root@web01 code]# systemctl restart nginx (建议使用system管理)
#到这咯就结束拉!

#拜拜啦!

#感谢查阅!


标签:配置文件,Nginx,08,etc,nginx,web01,root,搭建
From: https://blog.51cto.com/u_15166421/5742174

相关文章

  • 2022-2023-1 20221308 《计算机基础与程序设计》第6周学习总结
    这个作业属于哪个课程:https://edu.cnblogs.com/campus/besti/2022-2023-1-CFAP这个作业要求在哪里:https://www.cnblogs.com/rocedu/p/9577842.html#WEEK05作业目标:学习计......
  • c++开发环境搭建、visual studio安装
    1.C++简介C++是一种静态类型的、编译式的、通用的、大小写敏感的、不规则的编程语言,支持过程化编程、面向对象编程和泛型编程。C++被认为是一种中级语言,它综合了高级语言......
  • 使用kuboard快速搭建k8s高可用集群
    一、准备六台虚拟机1.1、六台虚拟机规划如下序号系统ip地址用途/名称备注1CentOS7.9192.168.142.10k8s-spray2CentOS7.9192.168.142.11k8s-master01master节点13CentOS7.......
  • 前端使用json-server快速搭建服务
    一、json-server概述​ 一个在前端本地运行,可以存储json数据的server。​ 通俗来说,就是模拟服务端接口数据,一般用在前后端分离后,前端人员可以不依赖API开发,而在本地搭建......
  • 【Visual Studio 2022】 首次安装出现 fatal error C1083: 无法打开包括文件:“crtdbg
    VS2022包括的版本如下:Windows版本WindowsSDK版本Windows10版本1903Windows10SDK版本1903(10.0.18362.1)Windows10版本2004Windows10SDK版本2004(10......
  • frp自己搭建内网映射
    地址:​​​https://github.com/fatedier/frp/tags​​​​https://gofrp.org/docs/features/http-https/subdomain/​​1、下载2、修改配置frps.ini[common]bind_port=170......
  • windows 驱动开发环境搭建
    参考链接:1.微软官方说明2.VS2019+WDK10关键点:1.按照微软官方对应的windows系统版本号安装对应的visualstudio,最好是专业版。2.安装visualstudio之后需要安装安......
  • 超越 Nginx!号称下一代 Web 服务器,用起来够优雅!
    Nginx是一款非常流行的Web服务器,在Github上已有​​16K+Star​​​,我们经常用它来做静态资源托管或反向代理。最近发现了一款全新的Web服务器​​Caddy​​​,Star数超越Ngin......
  • vscode搭建rust环境
    也可以可以使用IDE:ideaclion有插件支持vscode下配置rust插件rust-analyzer(rust语言后端)【如果是debug需要安装codeLLDB,windows建议安装vs】EvenBetterTOML【toml格......
  • docker 下nginx 实现文件下载
     1、新建目录存放文件 2、将目录挂载到容器,新增配置如下  3、nginx配置文件新增配置location~*(.*.apk){#代理后缀为apk的文件add_h......