当前位置: 首页 > news >正文

Nginx 安装及配置教程(Windows)【安装】

文章目录
  • 一、 Nginx 下载
    • 1. 官网下载
    • 2. 其它渠道
  • 二、 Nginx 安装
  • 三、 配置
  • 四、 验证
  • 五、 其它问题
    • 1. 常用命令
    • 2. 跨域问题

软件 / 环境安装及配置目录

一、 Nginx 下载

1. 官网下载

安装地址:https://nginx.org/en/download.html

  1. 打开浏览器输入网址 https://nginx.org/en/download.html,进入 Nginx 官网
  2. 选择对应的版本下载,推荐稳定版

2. 其它渠道

(1)百度网盘(1.24.0 版本)

链接:https://pan.baidu.com/s/16LfEdOTHwkCLQUD8Z488QQpwd=eizj
提取码:eizj

二、 Nginx 安装

  1. 下载完成后,将压缩包解压到本地即可

三、 配置

  1. 进入 Nginx 目录下,conf文件夹下编辑nginx.conf文件,根据自己需求进行配置

  2. 配置文件默认内容参数解析

    #默认为1,表示开启一个业务进程。根据服务器核数来配置,一般1个核对应1个进程
    worker_processes 1;

    #error_log logs/error.log;
    #error_log logs/error.log notice;
    #error_log logs/error.log info;

    events {
    #单个业务进程可接受连接数
    worker_connections 1024;
    }

    http {
    #引入http mime类型,引入在conf文件下的mime.types文件,让浏览器知道识别文件后缀名后该如何展示
    include mime.types;
    #如果mime类型没匹配上,默认使用二进制流的方式传输。
    default_type application/octet-stream;

    #使用高效网络传输,也就是数据0拷贝,直接传输数据。未开启sendfile sendfile on; #保持链接时间 keepalive_timeout 65; #vhost虚拟主机 server { #监听端口号 listen 80; #主机名域名 server_name localhost; #匹配路径url,样例:http://nginx.org/en/download.html location / { #文件根目录,相对于nginx安装根目录路径 root html; #默认页名称,访问先到访页面 index index.html index.htm; } #服务端报错后报错编码对应页面。样例:http://nginx.org/50x.html error_page 500 502 503 504 /50x.html; #报错后识别到域名后面跟了/50x.html,则匹配到根目录root下的html文件夹 location = /50x.html { root html; } }

    }

  3. 搭建站点

    虚拟主机

    server {
    listen 80; # 浏览器访问端口号
    server_name font_server; # 浏览器访问域名

    charset utf-8; access_log logs/xx_domian.access.log access; # 路由 location / { root ./html; # 访问根目录 index index.html index.htm; # 入口文件 }

    }

  4. 根据文件类型设置过期时间

    location ~.*.css$ {
    expires 1d;
    break;
    }

    location ~.*.js$ {
    expires 1d;
    break;
    }

    location ~ .*.(gif|jpg|jpeg|png|bmp|swf)$ {
    access_log off;
    expires 15d; #保存15天
    break;
    }

    curl -x127.0.0.1:80 http://www.test.com/static/image/common/logo.png -I #测试图片的max-age

  5. 禁止文件缓存

    location ~* .(js|css|png|jpg|gif)$ {
    add_header Cache-Control no-store;
    }

  6. 防盗链

    location ~* .(gif|jpg|png)$ {
    # 只允许 192.168.0.1 请求资源
    valid_referers none blocked 192.168.0.1;
    if (KaTeX parse error: Expected '}', got 'EOF' at end of input: …rite ^/ http://host/logo.png;
    }
    }

  7. 静态文件压缩

    server {
    # 开启gzip 压缩
    gzip on;
    # 设置gzip所需的http协议最低版本 (HTTP/1.1, HTTP/1.0)
    gzip_http_version 1.1;
    # 设置压缩级别,压缩级别越高压缩时间越长 (1-9)
    gzip_comp_level 4;
    # 设置压缩的最小字节数, 页面Content-Length获取
    gzip_min_length 1000;
    # 设置压缩文件的类型 (text/html)
    gzip_types text/plain application/javascript text/css;
    }

  8. 指定定错误页面

    根据状态码,返回对于的错误页面

    error_page 500 502 503 504 /50x.html;
    location = /50x.html {
    root /source/error_page;
    }

四、 验证

  1. 切换到 Nginx 安装目录下,双击Nginx.exe启动 Nginx
  2. 打开浏览器,输入http://127.0.0.1/(具体端口看个人配置,默认配置文件端口:80)出现以下界面说明配置成功
  3. 如果需要修改配置文件,则需要重新启动 Nginx,首先Ctrl + Shift + Esc,打开任务管理器,找个 Nginx 服务,结束任务,然后切换到 Nginx 安装目录下,双击Nginx.exe启动 Nginx

五、 其它问题

1. 常用命令

nginx -s stop # 快速关闭Nginx,可能不保存相关信息,并迅速终止Web服务。 nginx -s quit # 平稳关闭Nginx,保存相关信息,有安排的结束Web服务。 nginx -s reload # 因改变了Nginx相关配置,需要重新加载配置而重载。 nginx -s reopen # 重新打开日志文件。 nginx -c filename # 为 Nginx 指定一个配置文件,来代替缺省的。 nginx -t # 不运行,而仅仅测试配置文件。Nginx将检查配置文件的语法的正确性,并尝试打开配置文件中所引用到的文件。 nginx -V # 显示 nginx 的版本,编译器版本和配置参数。 taskkill /f /t /im nginx.exe # 彻底关闭nginx(关闭Nginx其他服务,这样才能彻底关闭) nginx -s reload # 重新加载配置

2. 跨域问题

跨域的定义
同源策略限制了从同一个源加载的文档或脚本如何与来自另一个源的资源进行交互。这是一个用于隔离潜在恶意文件的重要安全机制。通常不允许不同源间的读操作。

同源的定义
如果两个页面的协议,端口(如果有指定)和域名都相同,则两个页面具有相同的源。

Nginx 解决跨域的原理
例如:
前端 server 域名为:http://font_server
后端 server 域名为:https://github.com
现在 http://domain 对 http://font_server发起请求一定会出现跨域。
只需要启动一个 Nginx 服务器,将 server_name 设置为 font_server,然后设置相应的 location 以拦截前端需要跨域的请求,最后将请求代理回 github.com。配置如下:

## 配置反向代理的参数 server { listen 8080; server_name font_server ## 1. 用户访问 http://font_server,则反向代理到 https://github.com location / { proxy_pass https://github.com; proxy_redirect off; proxy_set_header Host $host; # 传递域名 proxy_set_header X-Real-IP $remote_addr; # 传递IP proxy_set_header X-Scheme $scheme; # 传递协议 proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } }
http://www.jsqmd.com/news/222000/

相关文章:

  • 成本优化:用Llama Factory实现高效GPU资源利用
  • 华为OD机试真题双机位C卷【打印机队列】 C语言实现
  • AI如何提升FORTIFY代码扫描效率?
  • yyt0618.15-2019详细解读
  • 【ai搜索】谷歌搜索与数眼智能联网搜索多角度对比
  • AI智能体可能被黑客攻击的 5 种方式(以及如何防范每一种攻击)
  • Thinkphp-Laravel本科生优秀作业交流网站vue
  • Nacos Namespaces未授权访问漏洞的防御策略
  • 模块化多电平变换器MMC(交流380V-直流800V整流)仿真,动稳态性能良好,附带仿真介绍文...
  • 电商大促期间:普罗米修斯监控实战全记录
  • 移远5G-A王炸模组上线!AI+Wi-Fi 8+卫星通信,三重Buff叠满
  • Thinkphp-Laravelvue药品招标采购系统的设计与实现
  • 快速理解 ImportError: libcudart.so.11.0 的定位与修复流程
  • 陪诊小程序开发运营全解析:技术架构+落地逻辑+合规要点
  • 基于正则化极限学习机的数据回归预测算法matlab实现
  • 解决问题 —— 用方程解决复杂应用题专项
  • 高速ADC FMC HPC采集卡ADS54J60,16bit 4通道,原理图PCB代码,F...
  • MATLAB2024B云端体验:免安装即时试用方案
  • python之asynccontextmanager学习
  • Thinkphp-Laravel北京地铁票务APP小程序
  • “入职背景调查”,构建职场信任的第一道防线
  • 更弱智的算法学习 day24
  • 最近在折腾西门子200PLC和施耐德ATV610变频器的Modbus通讯,发现这俩设备配合起来干活是真方便。直接上干货,咱们从最基础的通信配置开始说
  • Thinkphp-Laravel+uniapp微信小程序的毕业论文选题系统设计与实现
  • 西门子水处理1200 PLC程序+触摸屏程序(包含功能块SCL编写及多种功能模块)
  • python之contextmanager
  • Thinkphp-Laravel城市固废垃圾清运车辆管理系统
  • 新手必看:JavaScript堆内存问题入门指南
  • 背调软件如何重塑企业人才风控的底层逻辑
  • Thinkphp-Laravel+uniapp微信小程序的汽车线上车辆租赁管理系统的设计与实现_