文章目录
- 安装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都能够有效地处理用户的请求,并将响应迅速返回给用户,实现快速的网站访问体验。