常州外贸集团 网站建设,网站接入服务单位,上海市中小企业服务平台,wordpress 禁止twitter文章目录 前言一、Nginx二、功能1.Web服务器2.负载均衡3.正向代理4.反向代理5.动静分离 三、windows下载1.启动2.关闭3.常用命令4.代码解析1.全局配置2.每个进程的最大连接数3.HTTP核心模块4.Server服务5.反向代理服务6.websocket服务 总结 前言
Nginx#xff08;发音为“eng… 文章目录 前言一、Nginx二、功能1.Web服务器2.负载均衡3.正向代理4.反向代理5.动静分离 三、windows下载1.启动2.关闭3.常用命令4.代码解析1.全局配置2.每个进程的最大连接数3.HTTP核心模块4.Server服务5.反向代理服务6.websocket服务 总结 前言
Nginx发音为“engine-x”是一款 高性能的开源 Web 服务器同时也可作为 反向代理、负载均衡器、HTTP 缓存 和 邮件代理服务器。它的设计注重高并发、低内存消耗和高稳定性广泛用于现代互联网架构。
一、Nginx
定义Nginx 是高性能的 HTTP 和反向代理的web服务器。
二、功能
1.Web服务器
Nginx可以作为静态页面的web服务器如果写过go项目有一个static的资源包那里面就是静态资源静态网页如html、css、js等。支持CGI协议的动态语言比如PHP不支持JavaJava需要与tomcat配合完成。
CGI协议通用网关接口是一种早期的Web服务器与外部程序交互的协议用于动态生成网页的内容。它定义了Web服务器如apache、nginx如何将HTTP请求传递给外部程序python、php等并接收其返回的响应数据。为什么java不能和nginx直接集成使用因为java是编译型语言运行在自己的jvm中主要支持http、ajp协议不需要外部的FastCGI协议比如python和php都需要和FastCGI使用而Java本身有自带的服务器tomcat所以nginx无法直接处理这样一个例外。
2.负载均衡
负载均衡是一种分配网络或计算负载的技术目的是将请求或任务均匀分发到多个服务器、服务或资源上以提高系统的性能、可靠性和可扩展性。
说白了就是将多个请求和任务均匀从一个服务器分发到多个服务器进行处理这样构成一个集群来处理。联想到集群的概念集群是指 将多台计算机服务器通过软件或网络连接起来协同工作对外表现为一个统一的计算资源。Nginx提供的负载均衡策略有两种内置策略和扩展策略。内置策略是轮询加权轮询、Ip hash扩展策略是我们自定义的。
3.正向代理
正向代理是一种通过代理服务器访问服务器的过程客户端向服务器发起请求并返回响应。客户端先向代理服务器进行发送请求而代理服务器再将请求发到服务器此时代理服务器保护了客户端的ip服务器这个时候只知道代理服务器的ip。
4.反向代理
反向代理是一种代表服务器接收客户端请求的过程客户端发送请求给反向代理服务器比如Nginx反向代理服务器接收请求转发给后端服务器将结果返回给反向代理服务器最终返回给客户端这个时候客户端不知道后端服务器的ip地址这样就隐藏了后端服务器地址。
5.动静分离
动静分离是将静态资源如HTML/CSS/JS/图片和动态请求如API/数据库查询分开处理 的架构设计核心目的是 提升网站性能、降低服务器压力。静态资源和动态请求分别打到不同的服务器进行处理。
三、windows下载
直接下载解压就可以了。Nginx下载
1.启动
跟redis差不多需要进入nginx.exe所在的目录打开cmd输入nginx.exe进行运行双击运行也可以双击只会一闪而过。我这里权限不够所以有报错正常的不会有报错信息。 默认是80端口可以打开nginx.config进行配置。 server{ listen: 80; }
2.关闭
关闭窗口不能让nginx停止要使用命令。 要在nginx.exe所在目录下打开cmd。 用后者可以保存数据的完整性。
nginx -s stop 或 nginx -s quit3.常用命令
nginx.exe 启动
nginx -s stop 停止
nginx -s quit 安全退出
nginx -s reload 重新加载配置文件 修改了配置文件后必须执行噢
grep nginx 查看进程4.代码解析 #user nobody;
worker_processes 1;#error_log logs/error.log;
#error_log logs/error.log notice;
#error_log logs/error.log info;#pid logs/nginx.pid;events {worker_connections 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;#gzip on;map $http_upgrade $connection_upgrade{default upgrade; close;}upstream webservers{server 127.0.0.1:8080 weight90 ;#server 127.0.0.1:8088 weight10 ;}server {listen 80;server_name localhost;#charset koi8-r;#access_log logs/host.access.log main;location / {root html/sky;index index.html index.htm;}#error_page 404 /404.html;# redirect server error pages to the static page /50x.html#error_page 500 502 503 504 /50x.html;location /50x.html {root html;}# 反向代理,处理管理端发送的请求location /api/ {proxy_pass http://localhost:8080/admin/;#proxy_pass http://webservers/admin/;}# 反向代理,处理用户端发送的请求location /user/ {proxy_pass http://webservers/user/;}# WebSocketlocation /ws/ {proxy_pass http://webservers/ws/;proxy_http_version 1.1;proxy_read_timeout 3600s;proxy_set_header Upgrade $http_upgrade;proxy_set_header Connection $connection_upgrade;}# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000##location ~ \.php$ {# root html;# fastcgi_pass 127.0.0.1:9000;# fastcgi_index index.php;# fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;# include fastcgi_params;#}# deny access to .htaccess files, if Apaches document root# concurs with nginxs one##location ~ /\.ht {# deny all;#}}# another virtual host using mix of IP-, name-, and port-based configuration##server {# listen 8000;# listen somename:8080;# server_name somename alias another.alias;# location / {# root html;# index index.html index.htm;# }#}# HTTPS server##server {# listen 443 ssl;# server_name localhost;# ssl_certificate cert.pem;# ssl_certificate_key cert.key;# ssl_session_cache shared:SSL:1m;# ssl_session_timeout 5m;# ssl_ciphers HIGH:!aNULL:!MD5;# ssl_prefer_server_ciphers on;# location / {# root html;# index index.html index.htm;# }#}}
1.全局配置
#user nobody; # 默认以nobody用户运行注释状态实际使用为默认用户
worker_processes 1; # 工作进程数 建议设置为cpu核心数#error_log logs/error.log; # 错误日志路径位置注释状态使用默认
#error_log logs/error.log notice; # 可指定日志级别notice、info、debug等
#error_log logs/error.log info; # 同上#pid logs/nginx.pid; # 进程id文件路径
2.每个进程的最大连接数
events {worker_connections 1024; # 每个worker进程的最大连接数 1024个
}3.HTTP核心模块
http {include mime.types; # 引入MIME类型定义文件default_type application/octet-stream; # 默认响应类型二进制流sendfile on; # 启用高效文件传输模式keepalive_timeout 65; # 客户端保持连接超时时间秒# WebSocket支持配置map $http_upgrade $connection_upgrade {default upgrade; close;}# 定义上游服务器组负载均衡upstream webservers {server 127.0.0.1:8080 weight90; # 权重90%#server 127.0.0.1:8088 weight10; # 备用服务器注释状态}4.Server服务 server {listen 80; # 监听80端口server_name localhost; # 域名本地测试用# 静态资源服务location / {root html/sky; # 静态文件根目录html/skyindex index.html index.htm; # 默认索引文件}# 错误页面配置error_page 500 502 503 504 /50x.html;location /50x.html {root html; # 50x错误页存放目录}5.反向代理服务 # 管理端API代理location /api/ {proxy_pass http://localhost:8080/admin/; # 转发到本地8080端口#proxy_pass http://webservers/admin/; # 注释的负载均衡方案}# 用户端API代理location /user/ {proxy_pass http://webservers/user/; # 通过upstream组转发}6.websocket服务 location /ws/ {proxy_pass http://webservers/ws/; # 代理WebSocket请求proxy_http_version 1.1; # 强制HTTP/1.1协议proxy_read_timeout 3600s; # 连接超时时间1小时proxy_set_header Upgrade $http_upgrade; # 升级协议头proxy_set_header Connection $connection_upgrade; # 连接类型}总结
Nginx是一个高性能的静态资源服务器它具有网关、负载均衡、动静分离等功能非常高效的提升了放问速度。