nginx如何安装 以及nginx的配置文件

news2025/1/14 1:15:48

Nginx 网站服务

是一个高性能 轻量级web服务软件,

高新能:对http并发连接的处理能很高,单台处理器可支持30000-50000个并发请求,(一般设置在20000个左右)

轻量级:nginx软件很小,安装所需的空间很小

稳定性强:对系统资源消耗低

nginx 的主要功能:

1处理静态网页:html htm 图像

2 支持反向代理(实现负载均衡,负载均衡靠算法实现)

3 处理动内容的能力

4 一个nginx可以配置多个虚拟主机,每一个虚拟主机可以作为一个域名的站点,拥有独立的配置和资源

5 URL重定向:可以对URL 的请求进行修改和重定向

6 缓存机制,可以缓存静态文件的额动态内容

7 包含日志记录,服务日志,访问日志,报错日子 控制日志还是在/var/log/messsages

8 代理服务器,通过代理可以访问其他的后端服务器

2 Nginx 下面的文件

conf :    保存nginx的所有配置文件 其中nginx.conf是nginx的配置文件

html:     保存nginx的web 文件 .html为结尾的文件,图片

logs:     保存日志的日录,路径可以改

sbin: nginx 的二进制启动文件

html下面的

50x.html是nginx默认的报错提示页面

access.log 记录的是访问日志记录

error.log 记录的是报错日志

nginx-t 检测nginx配置文件以及配置文件的语法是否正确

被http占用

nginx -v 只是查看nginx的版本

nginx -V 查看版本 和nginx支持的配置模块

nginx -s stop restart reload  给nginx主程序发送信息,不能开启nginx服务

如何安装nginx:

1、systemctl stop firewalld

systemctl disable firewalld

setenforce 0

2、安装依赖包

yum -y install gcc pcre-devel openssl-devel zlib-devel openssl  openssl-devel

3、创建运行用户、组

(Nginx 服务程序默认以 nobody 身份运行,建议为其创建专门的用户账号,以便更准确地控制其访问权限)

useradd -M -s /sbin/nologin nginx

4、编译安装Nginx

cd /opt

tar zxvf nginx-1.22.0.tar.gz -C /opt/

cd nginx-1.22.0/

./configure --prefix=/usr/local/nginx \

--user=nginx \

--group=nginx \

--with-http_ssl_module \

--with-http_v2_module \

--with-http_realip_module \

--with-http_stub_status_module \

--with-http_gzip_static_module \

--with-pcre \

--with-stream \

--with-stream_ssl_module \

--with-stream_realip_module

5、make && make install

6、chown -R nginx.nginx /usr/local/nginx #修改权限

7、ln -s /usr/local/nginx/sbin/nginx /usr/sbin/ #让系统识别nginx的操作命令

8、vim /lib/systemd/system/nginx.service

[Unit]

Description=nginx - high performance web server

Documentation=http://nginx.org/en/docs/

After=network-online.target remote-fs.target nss-lookup.target

Wants=network-online.target

[Service]

Type=forking

PIDFile=/usr/local/nginx/run/nginx.pid

#注意文件位置,如果不对 启动不了

ExecStart=/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf

#注意启动文件位置

ExecReload=/bin/kill -s HUP $MAINPID

#相当于重启

ExecStop=/bin/kill -s TERM $MAINPID

#相当于stop

[Install]

WantedBy=multi-user.target

#支持多用户模式

9、mkdir -p /usr/local/nginx/run/

#创建目录

10、vim /usr/local/nginx/conf/nginx.conf

#修改配置文件

pid /usr/local/nginx/run/nginx.pid;

#找到 pid的位置修改  

11、systemctl daemon-reload

#重新加载配置

12、systemctl start nginx.service

nginx配置文件

user  nobody;

运行用户,默认使用nginx。

worker_processes  1;

工作进程数量,根据服务器的CPU数来填写或根据访问量来选择(硬件条件满足的情况下)。

pid /usr/local/nginx/run/nginx.pid;

PID文件的完整。

events {

    worker_connections  1024;

}

nginx服务端可以同时并发的连接数,最多只有1024个。

http {

    include       mime.types;

    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  logs/access.log  main;

    sendfile        on;

支持文件的下载功能。

    #tcp_nopush     on;

    #keepalive_timeout  0;

    keepalive_timeout  65;

连接保持时间65。

    #gzip  on;

开启页面的压缩功能。

    server {

        listen       80;

虚拟主机的监听端口,多个虚拟主机端口的区分。

        server_name  localhost;

站点的域名

        #charset koi8-r;

        charset utf-8

配置字符的默认编码,支持中文

        #access_log  logs/host.access.log  main;

        location /liu {

匹配URI的路径,也是名称 / 配置的家目录下

            root  /opt;

匹配的是安装路径当中位置 html

            alias /opt/liu;

alias 加全部路径 不能与上面的拼接

            index  index.html index.htm;

都是index开头,而且.html .htm

只能修改了系统配置文件(Vim /etc/security/limits.conf #限制系统打开的配置文件

) 才能限制连接数

注意:设置保存后,需要重新ssh连接才会看到配置更改的变化
vim  /etc/security/limits.conf

#最大进程数的软限制 65535

#最大进程数的硬限制65535

#打开文件的限制最大65535

修改之后只能重启

Iptables 修改内核文件 用sysctl -p 直接生效  但是这里的limits.conf 必须要重启reboo

Nginx服务的主配置文件nginx.conf

#user nobody;                #运行用户,若编译时未指定则默认为nobody

worker_processes 1;          #工作进程数量,可配置成服务器内核数*2,如果网站访问量不大,一般设为1就够用了
#error_log logs/error.log;   #错误日志文件的位置
#pid logs/nginx.pid;         #PID文件的位置

events {
    use epoll;               #使用epoll模型, 2.6及以上版本的系统内核,建议使用epoll模型以提高性能
    worker_connections 1024; #每个进程处理1024个连接
}
#如提高每个进程的连接数还需执行"ulimit -n 65535"命令临时修改本地每个进程可以同时打开的最大文件数。
#在Linux平台上,在进行高并发TCP连接处理时,最高的并发数量都要受到系统对用户单一进程同时可打开文件数量的限制(这是因为系统为每个TCP连接都要创建一个socket句柄,每个socket句柄同时也是一个文件句柄)
#可使用"ulimit -a"命令查看系统允许当前用户进程打开的文件数限制。

注意:设置保存后,需要重新ssh连接才会看到配置更改的变化
vim  /etc/security/limits.conf
# 65535 为Linux系统最大打开文件数
* soft nproc 65535 
* hard nproc 65535 
* soft nofile 65535 
* hard nofile 65535
reboot


全局配置的六个模块简介:
全局块:全局配置,对全局生效;
events块:配置影响 Nginx 服务器与用户的网络连接;

http块:配置代理,缓存,日志定义等绝大多数功能和第三方模块的配置;

server块:配置虚拟主机的相关参数,一个 http 块中可以有多个 server 块;

location块:用于配置匹配的 uri ;
注意:location 匹配的内容来源是来自网页的URI,而不是URL
(URL代表整个链接如:www.baidu.com/images/search,而URI则是/images/search。
所以nginx的location匹配的是URI)


Nginx的四大模块——proxy、headers、upstream、stream模块

Proxy 模块:
proxy 模块是 Nginx 的核心模块之一,用于实现反向代理功能。
它允许将客户端的请求代理到后端的服务器,并将响应返回给客户端。
proxy 模块支持 HTTP、HTTPS、FastCGI、uWSGI、SCGI 等多种协议。
通过配置 proxy_pass 指令,可以指定代理的后端服务器地址。

Headers 模块:
headers 模块用于处理 HTTP 请求和响应的头部信息。它允许添加、修改或删除请求头和响应头,
实现对头部信息的定制化控制。headers 模块提供了一系列的指令,
如 add_header、set_header、more_set_headers 等,用于操作头部信息。

Upstream 模块:
upstream 模块用于配置反向代理服务器组(也称为上游服务器组)。
它定义了后端服务器的列表和相关的负载均衡策略,用于分发请求到后端服务器。
upstream 模块通过 upstream 块来配置后端服务器组,其中包括 server 指令用于定义后端服务器。

Stream 模块:
stream 模块是 Nginx 的流处理模块,用于处理 TCP 和 UDP 流量。
它提供了 TCP/UDP 代理、负载均衡、数据包过滤等功能。stream 模块通过 stream 块来配置流的处理规则,
可以根据目标地址和端口等条件进行流量的转发和处理。

HTTP配置

http {
#文件扩展名与文件类型映射表
include  mime.types;

#默认文件类型
default_type appkgcation/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 logs/access.log main;

#支持文件发送(下载)
sendfile   on;

#此选项允许或禁止使用socket的TCP_CORK的选项(发送数据包前先缓存数据) ,
此选项仅在使用sendfile的时候使用
#tcp_nopush on;

#连接保持超时时间,单位是秒
#keepalive_timeout 0;
keepalive_timeout 65;

#gzip模块设置,设置是否开启gzip压缩输出
gzip on;
-------------------------------------------------------------------------------------------
日志格式设定:
$remote_addr与$http_x_forwarded_for用以记录客户端的ip地址;
$remote_user:用来记录客户端用户名称;
$time_local: 用来记录访问时间与时区;
$request: 用来记录请求的url与http协议;
$status: 用来记录请求状态;成功是200,
$body_bytes_sent :记录发送给客户端文件主体内容大小;
$http_referer:用来记录从哪个页面链接访问过来的;
$http_user_agent:记录客户浏览器的相关信息;
通常web服务器放在反向代理的后面,这样就不能获取到客户的IP地址了,
通过$remote_add拿到的IP地址是反向代理服务器的iP地址。
反向代理服务器在转发请求的http头信息中,
可以增加x_forwarded_for信息,用以记录原有客户端的IP地址和原来客户端的请求的服务器地址。
--------------------------------------------------------------------------------------------
# Web服务的监听配置
server {
   #监听地址及端口
   listen 80;
   #站点域名,可以有多个,用空格隔开
   server name www.kgc.com;
   #网页的默认字符集
   charset utf-8;
   #根目录配置
   location / {
   网站根目录的位置/usr/local/nginx/html
   root html;
   #内部错误的反馈页面
   error_page 500 502 503 504 /50x.html;
   #错误页面配置
   location = /50x.html {
   root html;
   }
  }
 }
 
vim /usr/local/nginx/conf/nginx.conf 
server {
        listen       80;
        server_name  www.kgc.com;
        
systemctl restart nginx.service        
echo "192.168.233.21 www.kgc.com" > /etc/hosts  ---没有做正向解析,直接主机映射
访问浏览器
 
location常见配置指令,root、alias、proxy_pass(反向代理配置)

location /test {
            root   /var/www/html;
            index  index.html index.htm;
        }
        
location /test {
            alias   /var/www/html/test;
            index  index.html index.htm;
        }

nginx是通过alias设置虚拟目录,在nginx的配置中,alias目录和root目录是有区别的:

1)alias指定的目录是准确的,即location匹配访问的path目录下的文件直接是在alias目录下查找的;

2)root指定的目录是location匹配访问的path目录的上一级目录,这个path目录一定要是真实存在root指定目录下的;

Nginx的功能模块

proxy:代理功能 核心的模块之一,配置反向代理的功能

proxy_passz指定 定义在locationg中,根据location来的

headers功能模块:

处理请求和头部的响应信息,获取客户端的真实ip

upstream模块:

七层方向代理模块,只能配置在http模块中,或者stream模块中这里配置

Stream :四层反向代理模块,只能写在全局配置当中

只能写在http模块上面  或者最下面

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

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

相关文章

c语言:通讯录管理系统(动态分配内存版)

前言:在大多数高校内,都是通过设计一个通讯录管理系统来作为c语言课程设计,通过一个具体的系统设计将我们学习过的结构体和函数等知识糅合起来,可以很好的锻炼学生的编程思维,本文旨在为通讯录管理系统的设计提供思路和…

GPU 基础知识整理

萌新: 在接触一款硬件时我会:基础硬件结构,线程结构,内存布局,数据吞吐量,等方面进行学习 首先GPU的特点: 并行性能:GPU 是专门设计用于并行计算的硬件,通常具有大量的处理单元&am…

Vue中的监视属性

一、监视属性的使用 (一)配置watch进行监视 当我们想要监视一个属性改变的时候就可以使用监视属性监视其变化并进行操作。 语法格式如下: watch:{ 监视属性名称 : { // 监视属性的配置项 } } 1. handler函数 当监视的属性发生变化时就调…

进程死锁的处理策略之预防死锁,避免死锁以及死锁的检测和解除

1.不允许死锁发生 1.静态策略:预防死锁 知识回顾:死锁的产生必须满足四个必要条件,只要其中一个或者几个条件不满足,死锁就不会发生。 1.破环互斥条件 互斥条件: 只有对必须互斥使用的资源的争抢才会导致死锁。 如果把只能互斥使用的资源…

数据结构和算法(12):词典

词典 逻辑上的词典,是由一组数据构成的集合,其中各元素都是由关键码和数据项合成的词条(entry)。 映射(map)结构与词典结构一样,也是词条的集合。 二者的差别仅仅在于,映射要求不同…

cpp文件操作

文件操作 数据流 在cpp中,流(stream)是一个抽象概念,用于描述如何从一个位置到又一个位置传输数据。流主要用于I/O操作。 数据流包括两大类:1. 输入流(istream):数据从某个源流入程序, 2. 输出流(ostrea…

CCF CSP认证历年题目自练Day28

题目一 试题编号: 202109-1 试题名称: 数组推导 时间限制: 1.0s 内存限制: 512.0MB 样例1输入 6 0 0 5 5 10 10 样例1输出 30 15 样例2输入 7 10 20 30 40 50 60 75 样例2输出 285 285 题目分析(个人理解&#…

yml显示不了小树叶图标解决办法

问题描述 在项目中,idea新建yml文件不显示小绿叶图标 1、解决办法一 找到下图设置:file -> settings -> Plugins 查看spring boot插件是非已安装(按照下图步骤查看) 2、解决办法二 ctrlalts,去File Types查…

记一次使用vue-markdown在vue中解析markdown格式文件,并自动生成目录大纲

先上效果图 如图所示,在网页中,能直接解析markdown文档,并且生成目录大纲,也支持点击目录标题跳转到对应栏目中,下面就来讲讲是如何实现此功能的。 1、下载vue-markdown yarn add vue-markdown 2、在页面中渲染markdo…

MySQL数据生成工具mysql_random_data_load

在看MySQL文章的时候偶然发现生成数据的工具,此处直接将软件作者的文档贴了过来,说明了使用方式及下载地址 Random data generator for MySQL Many times in my job I need to generate random data for a specific table in order to reproduce an is…

2023.10 秋爽版 java 软件授权激活 架构 java代码混淆 按日期授权 不联网

什么是代码混淆? 代码混淆是一种技术,用于在不改变代码功能的情况下,通过改变代码的结构和逻辑,使之变得更难理解和分析,从而增加反向工程的难度。 为什么要进行代码混淆? 在Java应用程序中,…

MyBatisPlus(十七)通用枚举

说明 MyBatisPlus 优雅地使用枚举类型。 声明通用枚举属性 使用 EnumValue 注解枚举属性 package com.example.web.enumeration;import com.baomidou.mybatisplus.annotation.EnumValue; import com.fasterxml.jackson.annotation.JsonValue; import lombok.AllArgsConstru…

安装Android SDK点击SDK Manager.exe一闪而退完美解决方案

如上图,我们点击 “SDK Manager.exe” 总是一闪而退。 1.查看提示说Detect whether Java SE Development Kit is installed,检查你的JDK是否安装。 2.在cmd里看了,java -version 和javac -version都是有显示版本的。说明安装以及环境配置成…

ES6介绍

1:ES6声明变量 1.变量var声明变量的问题 ES5 可以重复声明变量可以先使用再声明造成全局变量污染 2.let声明变量特点 ES6 不能先使用再说明不能重复定义一个变量具有块级作用域 3.const声明变量特点 ES6 不能先使用再说明一旦声明必须赋值赋值之后不能修改具有块级…

0144 文件管理

目录 4.文件管理 4.1文件系统基础 4.2目录 4.3文件系统 部分习题 4.文件管理 4.1文件系统基础 4.2目录 4.3文件系统 部分习题 1.UNIX操作系统忠,输入/输出设备视为() A.普通文件 B.目录文件 C.索引文件 D.特殊文…

cesium 地图蒙版遮罩效果

示例代码 <!DOCTYPE html> <html lang"en"><head><!-- Use correct character set. --><meta charset"utf-8" /><!-- Tell IE to use the latest, best version. --><meta http-equiv"X-UA-Compatible"…

快速排序 ← PPT

【算法代码】https://blog.csdn.net/hnjzsyjyj/article/details/127825125

JavaScript (下)

1.面向对象 在 Java 中我们学习过面向对象&#xff0c;核心思想是万物皆对象。在 JavaScript 中同样也有面向对象。思想类似。 把相关的数据和方法组织为一个整体来看待&#xff0c;从更高的层次来进行系统建模&#xff0c;更贴近事物的自然运行模式 1.类的定义和使用 格式…

Java二叉树超详解(常用方法介绍)(2)

二叉树中的常用方法 静态二叉树的手动创建 这里我们先给出二叉树结点的信息(这里是内部类)&#xff1a; static class TreeNode {public char val;public TreeNode left;//左孩子的引用public TreeNode right;//右孩子的引用public TreeNode(char val) {this.val val;}} 手动…

嵌入式系统开发【深入浅出】 UART 与 USART

目录 UART: 通用串行异步收发器 串行通信的时序 8N1&#xff1a;8位数据位 N没有校验位 1停止位1位 中断控制 编程重点 引言&#xff1a; 串口通讯(Serial Communication)是一种设备间非常常用的串行通讯方式&#xff0c;并且大部分电子设备都支持该通讯方式&#xff0c;也…