游戏介绍
nginx最新稳定版本已经发布,支持windows11、10、8和7等主流操作系统,nginx是什么意思?中文翻译就是代理服务器,用专业术语来描述就是高性能的tcp、udp、http和反向代理服务器,简单描述就是web服务器软件,可以说它就是为网页而生,超级小的内存,不占电脑空间,稳定性强,从俄罗斯传到国内后,深受国内程序猿的喜爱。
nginx安装包是轻量级的Web服务器、反向代理服务器及电子邮件代理服务器,并在BSD-like协议下发行,在高连接并发的情况下,这款服务器是Apache服务器的不错替代品。而且因为软件完全用C语言编写,所以这款强大的服务器目前能够应用在许多操作系统平台,比如Linux、windows、Mac OS X等等系统上。中国大陆许多网站都使用了这款软件,比如京东、腾讯、淘宝、网易等。占用内存少,并发能力强,而且并发能力目前在同类型的软件中表象的非常好,尤其是在网页服务器中,该软件的配置也非常简洁,不需要用户花费大量时间去进行相关配置,而且还只会赐perl语法,BUG也非常的少!
Nginx最新版(发音同 engine x)是轻量级的Web 服务器、反向代理服务器及电子邮件(IMAP/POP3)代理服务器,并在一个BSD-like 协议下发行。由俄罗斯的程序设计师Igor Sysoev所开发,供俄国大型的入口网站及搜索引擎Rambler(俄文:Рамблер)使用。
下载解压后,运行nginx.exe;
win10以上系统,会弹出安全提示,点击“允许访问”;
点击任务管理器,查看是否启动成功;
在进程里面,一直下拉,直到看到nginx.exe,代表安装和运行成功。
1.配置文件结构
Nginx 的主要配置文件通常位于 /etc/nginx/nginx.conf。该文件包含全局指令、事件配置和多个 server 块,用于定义不同的虚拟主机。
配置文件基本结构:
user nginx; # 指定运行 Nginx 的用户
worker_processes auto; # 自动设置工作进程数量
events {
worker_connections 1024; # 每个工作进程允许的最大连接数
}
http {
include mime.types; # 包含 MIME 类型
default_type application/octet-stream; # 默认 MIME 类型
sendfile on; # 启用高效文件传输
keepalive_timeout 65; # 连接保持时间
# 定义服务器块
server {
listen 80; # 监听端口
server_name localhost; # 服务器名称
location / {
root /usr/share/nginx/html; # 网站根目录
index index.html index.htm; # 默认主页
}
# 错误页面
error_page 404 /404.html;
location = /404.html {
internal;
}
}
}
2.常用指令详解
http 块
include mime.types;:引入 MIME 类型文件,用于根据文件扩展名设置 Content-Type。
default_type:指定默认的 MIME 类型。
sendfile on;:启用高效的文件传输。
keepalive_timeout:设置保持连接的超时时间。
server 块
listen:指定 Nginx 监听的 IP 地址和端口。
server_name:定义服务器名称,支持域名和 IP 地址。
location:根据请求 URI 来匹配不同的处理规则。
location 指令
location /:匹配根 URL。
location /images/:匹配以 /images/ 开头的 URL。
location ~ .php$:使用正则表达式匹配以 .php 结尾的 URL。
3.示例配置
3.1 基本静态文件服务
server {
listen 80;
server_name example.com www.example.com;
location / {
root /var/www/example; # 网站根目录
index index.html index.htm; # 默认主页
}
error_page 404 /404.html; # 自定义404页面
}
3.2 反向代理
server {
listen 80;
server_name api.example.com;
location / {
proxy_pass http://backend_server; # 反向代理到后端服务器
proxy_set_header Host $host; # 转发请求头
proxy_set_header X-Real-IP $remote_addr; # 转发真实 IP
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; # 转发代理 IP
}
}
3.3 SSL 配置
server {
listen 443 ssl; # 启用 SSL
server_name example.com;
ssl_certificate /etc/ssl/certs/example.crt; # SSL 证书路径
ssl_certificate_key /etc/ssl/private/example.key; # 私钥路径
location / {
root /var/www/example;
index index.html index.htm;
}
}
3.4 gzip压缩
http {
gzip on; # 启用 gzip 压缩
gzip_types text/plain application/json; # 压缩的 MIME 类型
}
3.5 日志配置
http {
access_log /var/log/nginx/access.log; # 访问日志
error_log /var/log/nginx/error.log; # 错误日志
}
3.6 负载均衡
#轮询负载均衡
http {
upstream backend {
server backend1.example.com;
server backend2.example.com;
server backend3.example.com;
}
server {
listen 80;
server_name example.com;
location / {
proxy_pass http://backend; # 代理到 upstream 定义的服务器
}
}
}
#最少连接负载均衡
http {
upstream backend {
least_conn; # 使用最少连接方法
server backend1.example.com;
server backend2.example.com;
}
server {
listen 80;
server_name example.com;
location / {
proxy_pass http://backend;
}
}
}
#IP 哈希负载均衡
http {
upstream backend {
ip_hash; # 使用 IP 哈希
server backend1.example.com;
server backend2.example.com;
}
server {
listen 80;
server_name example.com;
location / {
proxy_pass http://backend;
}
}
}
3.7 安全性配置
#通过 deny 和 allow 指令来限制 IP 地址的访问
server {
listen 80;
server_name example.com;
location / {
allow 192.168.1.0/24; # 允许某个网段的 IP
deny all; # 拒绝其他所有 IP
}
}
#防止其他网站直接链接到你网站的图片
server {
listen 80;
server_name example.com;
location ~* .(jpg|jpeg|png|gif)$ {
valid_referers none blocked example.com *.example.com;
if ($invalid_referer) {
return 403; # 拒绝访问
}
}
}
#限制请求速率:防止 DDoS 攻击
http {
limit_req_zone $binary_remote_addr zone=one:10m rate=1r/s;
server {
location / {
limit_req zone=one burst=5;
}
}
}
3.8 URL 重写与重定向
#重定向
server {
listen 80;
server_name old-example.com;
return 301 http://new-example.com$request_uri; # 301 重定向到新域名
}
#使用 rewrite 指令进行 URL 重写。
server {
listen 80;
server_name example.com;
location / {
rewrite ^/oldpath/(.*)$ /newpath/$1 permanent; # 永久重写
}
}
3.9 处理 PHP 文件
server {
listen 80;
server_name example.com;
root /var/www/example;
index index.php index.html index.htm;
location / {
try_files $uri $uri/ =404; # 处理静态文件
}
location ~ .php$ {
include fastcgi_params;
fastcgi_pass 127.0.0.1:9000; # PHP-FPM 的地址
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}
}
3.10 错误页面定制
#可以自定义错误页面,以提高用户体验。
server {
error_page 404 /404.html; # 定义404错误页面
location = /404.html {
root /usr/share/nginx/html; # 错误页面的文件路径
internal; # 防止直接访问
}
}
3.11 HTTP Auth Basic
#访问某个location增加二次认证
location /protected {
auth_basic "Restricted Content";
auth_basic_user_file /etc/nginx/.htpasswd; # 指向密码文件
}
3.12 WebSocket 支持
server {
location /ws/ {
proxy_pass http://backend_service;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade; # WebSocket 需要的头部
proxy_set_header Connection "upgrade";
}
}
3.13 nginx防盗链配置
防盗链(Hotlink Protection)可以有效防止其他网站直接链接到你的资源(如图片、视频等),从而节省带宽和保护内容。
server {
listen 80;
server_name example.com;
location ~* .(jpg|jpeg|png|gif|mp4)$ {
valid_referers none blocked example.com *.example.com myfriend.com; #放行特定的网站访问
if ($invalid_referer) {
return 403; # 拒绝请求
}
root /path/to/your/files;
}
error_page 403 /403.html;
location = /403.html {
root /usr/share/nginx/html;
internal; # 只允许内部访问
}
}
3.14 跨域配置,基本 CORS 配置
在 Nginx 的 server 块中添加 add_header 指令,以支持跨域请求。
server {
listen 80;
server_name example.com;
location /api/ {
add_header 'Access-Control-Allow-Origin' 'https://specific-domain.com';
add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS';
add_header 'Access-Control-Allow-Headers' 'Content-Type, Authorization';
add_header 'Access-Control-Allow-Credentials' 'true';
if ($request_method = OPTIONS) {
add_header 'Access-Control-Allow-Origin' 'https://specific-domain.com';
add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS';
add_header 'Access-Control-Allow-Headers' 'Content-Type, Authorization';
return 204;
}
# 其他配置
proxy_pass http://backend_service;
}
}
4.其他配置
4.1全局配置
Nginx 的全局配置包含了影响 Nginx 服务器整体行为的指令,这些指令主要位于全局块中。全局块通常位于 events 和 http 块之外,它包含了对 Nginx 服务器运行所需的基本配置,如用户和用户组、进程数、工作目录、错误日志级别、PID 文件路径等。
常用的 Nginx 全局配置的主要指令包括:
user:指定 Nginx 工作进程运行的用户和用户组。
worker_processes:设置工作进程的数量,可以设置为 auto 自动匹配 CPU 核心数,或者指定具体数值。
error_log:配置错误日志的路径和日志级别。
pid:指定 Nginx 主进程 ID 文件的存放位置。
举个简单例子:
# 全局配置
user nginx nginx; # 指定运行Nginx的用户和用户组为nginx
worker_processes auto; # 自动设置工作进程数量,等于CPU核心数
# 错误日志配置
error_log /var/log/nginx/error.log warn; # 设置错误日志的路径和级别为warn
# PID文件配置
pid /var/run/nginx.pid; # 设置PID文件的存放位置
4.2 events 块
events 块用于设置服务器与客户端连接的相关属性配置。这些配置主要涉及网络连接和事件处理。
这里也举几个常用的例子。
worker_connections
设置每个工作进程的最大客户端连接数。这个指令通常与 worker_processes 指令结合使用,来计算整个 Nginx 服务器的最大并发连接数。
举个栗子
events {
worker_connections 1024;
}
use
指定使用哪种事件模型。Nginx 支持多种事件模型,如 epoll(Linux)、kqueue(BSD)、select 和 poll 等。通常,Nginx 会根据操作系统自动选择最佳的事件模型,但也可以手动指定。
举个栗子
events {
use epoll;
}
multi_accept
设置是否允许服务器在单个监听事件中接受多个连接。这可以减少 I/O 等待时间,提高性能。
举个栗子
events {
multi_accept on;
}
accept_mutex
在某些情况下,可以设置为 on 来允许多个工作进程同时监听相同的端口。默认情况下,它是关闭的,以避免多个进程间的端口竞争。
举个栗子
events {
accept_mutex on;
}
accept_mutex_delay
当 accept_mutex 被启用时,这个指令可以设置尝试获取互斥锁的延迟时间。
举个栗子
events {
accept_mutex_delay 10ms;
}
nginx -s reload 改变配置文件的时候,重启其工作进程,来时配置文件生效
nginx -s reopen 打开日志文件
nginx -s stop 强制关闭
nginx -s quit 安全关闭
高可靠性:Nginx 的设计目标是提供 7x24 小时不间断的服务。
模块化:Nginx 拥有丰富的模块系统,可以轻松扩展其功能。
配置简单:Nginx 的配置文件结构清晰,易于理解和管理。
高性能:Nginx 能够处理大量的并发连接,而内存使用率相对较低。
软件信息
相关版本
更多相关阅读
更多手游
应用
电脑
排行