安装和配置nginx(含https)

news/2024/7/5 4:39:56

文章目录

    • 安装Nginx
    • 配置
      • 单独的配置:
      • https配置
    • nginx为什么可以处理高并发

安装Nginx

sudo yum update
sudo yum install epel-release
sudo yum install nginx
sudo systemctl start nginx

安装好后可以打开自己的域名 看一下默认的页面

配置

具体参考Link
位置

/etc/nginx/nginx.conf

nginx默认文件的结构:

...              #全局块

events {         #events块
   ...
}

http      #http块
{
    ...   #http全局块
    server        #server块
    { 
        ...       #server全局块
        location [PATTERN]   #location块  #请求的url过滤,正则匹配,~为区分大小写,~*为不区分大小写。
        {
           #root path;  #根目录
           #index vv.txt;  #设置默认页
           proxy_pass  http://mysvr;  #请求转向mysvr 定义的服务器列表
           deny 127.0.0.1;  #拒绝的ip
           allow 172.18.5.54; #允许的ip  
        }
        location [PATTERN] 
        {
            ...
        }
    }
    server
    {
      ...
    }
    ...     #http全局块
}

1、全局块:配置影响nginx全局的指令。一般有运行nginx服务器的用户组,nginx进程pid存放路径,日志存放路径,配置文件引入,允许生成worker process数等。
2、events块:配置影响nginx服务器或与用户的网络连接。有每个进程的最大连接数,选取哪种事件驱动模型处理连接请求,是否允许同时接受多个网路连接,开启多个网络连接序列化等。
3、http块:可以嵌套多个server,配置代理,缓存,日志定义等绝大多数功能和第三方模块的配置。如文件引入,mime-type定义,日志自定义,是否使用sendfile传输文件,连接超时时间,单连接请求数等。
4、server块:配置虚拟主机的相关参数,一个http中可以有多个server。
5、location块:配置请求的路由,以及各种页面的处理情况。

默认监听的是80端口
单独服务的配置可以写新的文件
比如,把配置文件拆分开来,在/etc/nginx/conf.d/ 文件建立对应的域名配置文件,比如 /etc/nginx/conf.d/123.com.conf
然后在这个nginx.conf中进行引用
在原来文件/etc/nginx/nginx.conf 的http 块下加一句话就可以了:

include /etc/nginx/conf.d/*.conf;

在这里插入图片描述

单独的配置:

server {
    listen       8080; # 监听的端口
    server_name #你的域名 可以有多个;

    location / {
        proxy_pass http://127.0.0.1:9028;  # 转发的地址 比如这是我网站VUE前端的地址
        root   /home/daily_5_web/前端项目地址;  #根目录
        index  index.html index.htm; #设置默认页
    }

配置好后重启

sudo nginx -t
If there are no errors, restart Nginx with:
sudo systemctl restart nginx

现在就可以通过你配置的域名:8080来访问到我的前端界面了
xxx.cn:8080

https配置

需要监听443
需要已经准备好SSL证书(有免费的,可以申请,申请后得到文件,证书一般是pem文件和key文件
将下载好的证书上上传到服务器
比如腾讯云的可以参考这个连接

server {
     #SSL 默认访问端口号为 443
     listen 443 ssl; 
     #请填写绑定证书的域名
     server_name 域名 ; 
     #请填写证书文件的相对路径或绝对路径
     ssl_certificate /etc/nginx/xxx/xxx.crt; 
     #请填写私钥文件的相对路径或绝对路径
     ssl_certificate_key  /etc/nginx/xxx.key; 
     ssl_session_timeout 5m;
     #请按照以下协议配置
     ssl_protocols TLSv1.2 TLSv1.3; 
     #请按照以下套件配置,配置加密套件,写法遵循 openssl 标准。
     ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE; 
     ssl_prefer_server_ciphers on;
     location / {
         #网站主页路径。此路径仅供参考,具体请您按照实际目录操作。
         #例如,您的网站主页在 Nginx 服务器的 /etc/www 目录下,则请修改 root 后面的 html 为 /etc/www。
         proxy_pass http://127.0.0.1:5000; # 这是我后端的地址和端口号
         root   /home/xxx/backend; # 后端服务根目录
     }
     # 静态文件配置
location /fonts/SourceHanSansCN.ttf {
        add_header Access-Control-Allow-Origin *;
        alias /home/daily_5_web/backend/project/services/SourceHanSansCN-Medium.ttf;
        expires 1h;
    }
 }

修改完同样重启Nginx
用https+域名来访问网站 看是否成功
比如:
https://你的域名.cn/xcx/接口

nginx为什么可以处理高并发

Nginx实现支持并发请求的关键在于其事件驱动的架构和高效的处理机制。下面以一个用户访问网站的例子来解释Nginx如何支持并发请求:

用户发起HTTP请求:假设一个用户在浏览器中输入网站的URL并按下回车,发送HTTP请求到服务器。

Nginx接收请求:Nginx作为前端服务器监听在特定端口上,接收到用户的HTTP请求。

并发连接处理:Nginx使用事件驱动的架构,采用异步非阻塞的方式处理并发连接。它通过使用多个工作进程或线程来处理多个连接,每个连接都是一个独立的事件。

请求路由:Nginx根据预先配置的路由规则,将接收到的请求路由到适当的后端服务器。这可以是本地的Gunicorn服务器或其他远程服务器。

反向代理:作为反向代理服务器,Nginx可以在后端服务器和客户端之间进行代理。它将用户的请求转发到后端服务器,并将响应返回给用户,实现了负载均衡和高可用性。

静态文件服务:如果请求的是静态文件(如HTML、CSS、JavaScript、图像等),Nginx可以直接提供这些文件,而无需将请求转发到后端服务器。它可以通过配置缓存和文件压缩来提高静态文件的传输效率。

并发请求处理:Nginx的事件驱动机制允许同时处理多个请求。它使用高效的I/O多路复用技术(如epoll、kqueue等)来监听多个连接的状态,并在连接有数据可读或可写时触发相应的事件。

高性能处理:Nginx使用事件驱动和非阻塞I/O模型,在处理请求时能够高效利用服务器资源。它避免了每个连接都创建一个新的线程或进程的开销,相比传统的多线程或多进程模型,更节省资源并提供更高的并发能力。

通过上述过程,Nginx能够有效地支持并发请求。它的事件驱动架构和非阻塞I/O机制使得它能够处理大量的并发连接,同时提供高性能和可靠性的服务。无论是静态文件服务还是反向代理转发,Nginx都能够有效地处理用户的请求,并将响应迅速返回给用户,实现快速的网站访问体验。


http://lihuaxi.xjx100.cn/news/1313841.html

相关文章

【基础算法】贪心算法

贪心算法又称贪婪算法,是一种常见的算法思想。贪心算法的优点是效率高,实现较为简单,缺点是可能得不到最优解。 贪心算法的基本思想 贪心算法就是在求解问题时,总是做出当前看来最好的选择。也就是说贪心算法并不从整体最优上考…

伪类元素content,icon变形倾斜问题

![在这里插入图片描述](https://img-blog.csdnimg.cn/b58d128a80fd4a069a5e47cf2e87e256.png 检查发现原本设置了一个 font-style 为 italic,为倾斜样式 解决办法: font-style: normal;

seatunnel数据同步参数优化

执行引擎: Flink集群 数据同步脚本(tidb到tidb) env {job.name = tidb2tidbexecution.parallelism = 1job.mode = "BATCH"checkpoint.interval = 10000 } source {Jdbc {url = "jdbc:mysql://192.168.21.110:4000/test?useUnicode=true

骨传导耳机音质怎么样,推荐几款音质表现不错的骨传导耳机

最近体验了几款骨传导耳机,分享下我的使用感受。首先说一下为什么要选择骨传导耳机,我之前是使用入耳式耳机,戴久了耳朵会疼,而且晚上睡觉不能戴。于是就考虑骨传导耳机,因为骨传导耳机在传声的过程中不需要经过耳膜&a…

分布式中灰度方案就该这样设计!

一、背景简介 分布式系统中会存在这样的开发场景,不同需求可能涉及到对同一个服务的开发,那么该服务在研发期间就会存在多个版本并行的状态,为了保持不同版本之间的隔离性,验收需要将请求路由到指定版本号的服务上处理&#xff1…

AIOps智能运维应用案例 | 人行某中心加速完成信创国产化替代

本案例来自擎创落地案例集——某全国性金融服务组织 一、案例背景 1.政策需求 近些年,国内金融机构信创数字化转型的浪潮不断翻涌,信创作为主要的产业发展战略之一,已成为国内经济发展的新动能,是各行各业开拓创新的新风向标。【…

vue 打包去除console.log

vue 打包去除console.log 1、插件安装 npm install babel-plugin-transform-remove-console --save-dev2、声明插件,打开项目中 babel.config.js 文件 const prodPlugins [] if (process.env.NODE_ENV production) {prodPlugins.push(transform-remove-console…

浅析Lambda架构

大家好,今天我们来介绍一个用于亿级实时数据分析架构Lambda架构。 Lambda架构 Lambda架构(Lambda Architecture)是由Twitter工程师南森马茨(Nathan Marz)提出的大数据处理架构。这一架构的提出基于马茨在BackType和Tw…