2024 年最新 windows 操作系统搭建部署 nginx 服务器应用详细教程(更新中)

CSDN 2024-10-02 11:37:00 阅读 78

nginx 服务器概述

Nginx 是一款高性能的 HTTP 和 反向代理 服务器,同时是一个 IMAP / POP3 / SMTP 代理服务器。Nginx 凭借其高性能、稳定性、丰富的功能集、简单的配置和低资源消耗而闻名。

浏览 nginx 官网:https://nginx.org/

在这里插入图片描述

Nginx 应用场景

<code>静态文件服务:Nginx 可以高效地处理大量的静态文件请求,例如 HTML、CSS、JavaScript、图片等。

反向代理:将客户端的请求转发到后端的Web服务器,实现负载均衡和请求过滤。

API 网关:作为 API 的入口点,处理 API 请求的路由、认证、限流等。

HTTP / HTTPS 服务器:直接作为 Web 服务器,处理 HTTP 和 HTTPS 请求。

流媒体服务:支持视频、音频等流媒体内容的传输。

windows 安装 nginx

下载地址:https://nginx.org/en/download.html

在这里插入图片描述

解压目录

在这里插入图片描述

启动 nginx 服务

启动:解压目录位置进行打开 nginx.exe 文件

在这里插入图片描述

浏览器访问:localhost

在这里插入图片描述

80 端口占用问题

[emery] blind() to 0.0.0.0:80 failed (10013: An attempt was made to access a socket in a way forbidden by its access permissions) 就是80端口被其他程序占用。

查看 80 端口占用的程序

<code>netstat -aon | findstr :80

在这里插入图片描述

使用 taskkill 结束进程(注意:<code>/F 参数表示强制杀死进程)

taskkill /F /PID 【PID】

nginx 服务器配置

nginx 配置文件 conf 目录下 nginx.conf(默认配置 nginx 监听端口 80)

在这里插入图片描述

当更新了 nginx 配置文件 nginx.conf 时需要执行 nginx -s reload

<code>nginx -s reload

关闭 nginx 服务

快速停止 nginx: nginx -s stop

有序停止 nginx: nginx -s quit

taskkill: taskkill /f /t /im nginx.exe

nginx 配置反向代理

在 Nginx 中配置请求转发(也称为反向代理)是一种常见的技术,它允许 Nginx 将客户端的请求转发到后端服务器(如应用服务器或另一个 Nginx 实例),并将后端服务器的响应返回给客户端。

server {

listen 80; # 监听80端口

server_name yourdomain.com www.yourdomain.com; # 服务器名

location / {

proxy_pass http://backendserver.com; # 转发请求到后端服务器

proxy_set_header Host $host; # 将请求头中的Host字段转发给后端服务器

proxy_set_header X-Real-IP $remote_addr; # 转发真实IP地址

proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; # 转发X-Forwarded-For请求头

proxy_set_header X-Forwarded-Proto $scheme; # 转发协议(http或https)

# 可以添加更多的proxy_set_header指令来转发其他请求头

# 如果后端服务器需要HTTPS,确保使用proxy_pass https://...

}

# 其他location块...

}

在这个配置中,所有对 yourdomain.com 的请求都将被转发到 http://backendserver.com。通过 proxy_pass 指令指定了后端服务器的地址。proxy_set_header 指令用于转发请求头到后端服务器,这对于后端服务器根据请求头信息(如客户端的真实 IP 地址)做出决策很重要。

配置 80 端口代理本地 8080 端口

在Nginx中配置 80 端口转发到 8080 端口,意味着你想要让 Nginx 监听 80 端口(HTTP 的标准端口),并将所有接收到的请求转发到本地(或远程)的 8080 端口上。这通常用于将 Web 应用的默认 HTTP 端口(如Tomcat 的 8080)暴露给标准的 HTTP 端口,从而用户可以直接通过 HTTP 协议访问 Web 应用,而无需指定端口号。

server {

listen 80; # 监听80端口

server_name yourdomain.com www.yourdomain.com; # 替换为你的域名

location / {

proxy_pass http://127.0.0.1:8080; # 转发请求到本地的8080端口

proxy_set_header Host $host; # 转发Host头

proxy_set_header X-Real-IP $remote_addr; # 转发真实IP

proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; # 转发X-Forwarded-For头

proxy_set_header X-Forwarded-Proto $scheme; # 转发协议(http或https)

# 如果需要处理WebSocket连接,请确保添加以下行

# proxy_http_version 1.1;

# proxy_set_header Upgrade $http_upgrade;

# proxy_set_header Connection "upgrade";

# 其他可能需要的配置...

}

# 其他location块...

}

请注意,server_name指令应该被设置为你的域名(或IP地址,但出于SEO和安全性的考虑,建议使用域名)。如果你没有域名,或者只是想在本地测试这个配置,你可以将server_name设置为localhost或_(下划线),但这将允许Nginx处理所有未明确指定server_name的请求,这通常不推荐在生产环境中使用。

注意:配置完成后,不要忘记重新加载或重启 Nginx 以使更改生效。

重新加载 Nginx 配置

sudo nginx -s reload

使用 systemctl

sudo systemctl reload nginx

如果你遇到任何问题,确保 Nginx 正在运行,并且你的防火墙或安全组规则允许从外部访问 80 端口。如果你是在本地机器上测试这个配置,并且无法从外部访问它,那么这可能是因为你的防火墙设置或ISP(互联网服务提供商)的限制。在这种情况下,你可以尝试从同一台机器上的不同浏览器或使用 curl 命令来测试配置。

配置 ssl 证书

SSL证书(全称Secure Sockets Layer Certificate)是一种数字证书,其核心作用是在互联网通信中实现数据的安全传输。

SSL证书基本概念

SSL证书是遵守SSL协议,由受信任的数字证书颁发机构CA(Certificate Authority),在验证服务器身份后颁发的一种数字证书。它类似于驾驶证、护照和营业执照的电子副本,安装在服务器上后,也被称为SSL服务器证书。SSL证书通过在客户端(如浏览器)和服务器之间建立一条SSL安全通道(Secure Socket Layer),确保在互联网上传输的数据得到保护,防止被未经授权的第三方窃取或篡改。

nginx.conf 配置文件

server {

listen 443 ssl;

server_name 需要访问的域名; # 这里替换为实际的域名,不需要加 https://

# 注意:ssl on; 这条指令在新版 Nginx 中不需要,因为 listen 443 ssl 已经隐含了启用 SSL

ssl_certificate C:/Users/Administrator/Desktop/nginx-1.27.1/ssl/xcx.mjrate.com.pem; # 正确的证书文件路径

ssl_certificate_key C:/Users/Administrator/Desktop/nginx-1.27.1/ssl/xcx.mjrate.com.key; # 正确的私钥文件路径

ssl_session_cache shared:SSL:1m;

ssl_session_timeout 5m;

ssl_ciphers HIGH:!aNULL:!MD5; # 您可以考虑使用更现代的密码套件列表

ssl_prefer_server_ciphers on;

# HTTP 到 HTTPS 的重定向(如果需要的话,这里没有直接包含)

location / {

proxy_pass http://127.0.0.1:8080/; # 转发请求到本地的8081端口

proxy_set_header Host $host; # 转发 Host 头

proxy_set_header X-Real-IP $remote_addr; # 转发真实 IP

proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; # 转发 X-Forwarded-For 头

proxy_set_header X-Forwarded-Proto $scheme; # 注意:这里 $scheme 在 SSL 上下文中通常是 https,但如果您有特殊的反向代理配置,可能需要调整

# 还可以添加其他必要的 proxy_set_header 指令

}

# 其他 location 块或全局配置...

}

重新加载 Nginx 配置

nginx -s reload



声明

本文内容仅代表作者观点,或转载于其他网站,本站不以此文作为商业用途
如有涉及侵权,请联系本站进行删除
转载本站原创文章,请注明来源及作者。