赞
踩
Nginx是一个高性能的HTTP和反向代理web服务器,同时也提供了IMAP/POP3/SMTP服务。Nginx是由伊戈尔·赛索耶夫为俄罗斯访问量第二的Rambler.ru站点(俄文:Рамблер)开发的,第一个公开版本0.1.0发布于2004年10月4日。2011年6月1日,nginx 1.0.4发布。
特点是占有内存少,并发能力强,事实上nginx的并发能力在同类型的网页服务器中表现较好,中国大陆使用nginx网站用户有:百度、京东、新浪、网易、腾讯、淘宝等。在全球活跃的网站中有12.18%的使用比率,大约为2220万个网站。
Nginx安装非常的简单、配置文件非常简洁(还能够支持perl语法)、Bug非常少的服务。Nginx 启动特别容易,并且几乎可以做到7*24不间断运行,即使运行数个月也不需要重新启动。你还能够不间断服务的情况下进行软件版本的升级。
Nginx代码完全用C语言从头写成。官方数据测试表明能够支持高达 50,000 个并发连接数的响应。
项目刚上线时,用户量和并发量都很小。此时,一台应用服务器足够处理用户请求,服务器直接返回内容给用户。然而,随着用户数量的增加和并发量的上升,单台服务器无法满足需求。为了解决这个问题,采取了横向扩展的方式,增加了多台服务器。现在,多个项目运行在不同的服务器上。为了让用户访问这些服务器,引入了一个代理服务器。代理服务器的作用是接收用户的请求,并根据一定的规则将请求转发到不同的服务器节点上。这个过程对用户来说是无感知的,用户并不知道最终返回结果的服务器是哪一台。同时,希望代理服务器能够根据服务器的性能提供不同的权重选择,以保证最佳的用户体验。
Nginx官网:https://nginx.org/
本次使用华为云服务器(ubuntu22) + docker搭建nginx服务
拉取nginx镜像
docker pull nginx:latest
启动nginx容器并且复制默认配置文件到宿主机
docker run -d <image-id>
# 将容器中的nginx配置文件复制到 /docker/nginx下
# 包括默认配置文件、html、conf.d
docker cp nginx:/etc/nginx/nginx.conf /docker/nginx/conf/nginx.conf
docker cp nginx:/etc/nginx/conf.d /docker/nginx/conf/conf.d
docker cp nginx:/usr/share/nginx/html /docker/nginx/html/
# 接下来删除刚才运行的容器
挂载nginx配置、html、日志文件的方式重新启动容器
# 默认使用80端口
# 指定时区为Asia/Shanghai,配置打印日志的时区
# 挂载nginx的日志,方便查看
docker run -d -p 80:80 --name nginx \
-v /docker/nginx/conf/nginx.conf:/etc/nginx/nginx.conf \
-v /docker/nginx/conf/conf.d:/etc/nginx/conf.d \
-v /docker/nginx/log:/var/log/nginx \
-v /docker/nginx/html:/usr/share/nginx/html \
-v /root/www:/www \
-e TZ=Asia/Shanghai \
container-id
容器启动成功实例
测试服务启动状态(成功启动)
... #全局块 events { #events块 ... } http #http块 { upstream servername{ #负载均衡 ... } ... server #server块 { ... location #location块 { ... } } }
代理静态文件的nginx配置
# 代理静态文件的配置我们放到conf.d目录下,.conf后缀
# 我们启动服务的时候将宿主机的/root/www目录映射到容器的/www目录下
# 希望通过访问 http://host:port/static/filename 获取静态文件
server {
listen 80;
server_name 127.0.0.1;
location /static {
alias /www/;
index index.html index.htm;
try_files $uri $uri/ =404;
}
}
代理效果展示
在宿主机的/root/www目录下放一个test.jpg文件以测试效果
应用正以5001端口正常启动
代理web服务5001端口的nginx配置
# 这里没有使用域名 flask项目运行在5001端口 server { listen 80 default_server; server_name <私有IP>; access_log /var/log/nginx/myflask.access.log combined; error_log /var/log/nginx/myflask.error.log notice; #error_page 404 /404.html; #location = /404.html { # root /usr/share/nginx/html #} error_page 500 502 503 504 /50x.html; location = /50x.html { root /usr/share/nginx/html; } location / { proxy_pass http://<私有IP>:5001; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; # enable server push for resources http2_push_preload on; } }
代理效果展示
Nginx 是一个功能强大、高性能的服务器软件,适用于各种规模的网络应用和服务,可以提供高效、可靠的服务支持。具体用法和配置我们可以参考官网的文档和资源,利用其强大的功能构建高性能、可靠的网络应用和服务。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。