Nginx服务器使用详解

本文涉及的产品
.cn 域名,1个 12个月
简介: Nginx是一款高性能的开源Web服务器和反向代理服务器,具有出色的负载均衡和缓存功能。它不仅可以提供网站内容,还可以加速网站加载速度、增强安全性,并减少服务器资源占用。Nginx已经成为Web服务器和应用程序交付的不可或缺的一部分。本文的总结将有助于广泛的技术从业者更好地理解和利用Nginx的功能,以提高性能、安全性和可用性,实现更强大的Web应用和服务。

一、Windows安装Nginx

1、下载解压Nginx

访问 Nginx官网(nginx.org/en/download.html) 下载最新的稳定版本。


2、修改默认端口

解压Nginx压缩包好后,我们来修改Nginx的默认端口。Nginx的配置文件是conf目录下的nginx.conf,默认配置的nginx监听的端口为80,根据端口占用情况,我们可以修改位其他端口,这里我修改位40。


修改之前我们可以输入cmd指令,查询端口占用状态:

#查看80端口是否被占用的命令是:netstat-ano|findstr0.0.0.0:80netstat-ano|findstr"80"


3、启动Nginx

接下来,我们启动Nginx,验证服务是否成功开启.。双击根目录下的nginx.exe,双击后一个黑色的弹窗一闪而过就消失了,启动就完成了。

然后我们访问40端口,看到Nginx服务已经成功运行了。

如果需要停止Nginx,可以输入命令:

#停止Nginxnginx-sstop#有序退出Nginxnginx-squit#杀死Nginx任务taskkill/f/t/imnginx.exe

二、Nignx服务器发布项目

1、安装Nginx

参考我之前写过的文章:Windows安装Nginx


2、配置Nginx

我们这里要配置Nginx\conf\nginx.conf文件。

listen:监听的端口;

(监听端口需要避免占用,尤其是win-server,需要关闭IIS在80端口的默认项目)

server_name:监听的域名(填写localhost即为公网IP);

location里proxy_pass:设置转发的目标地址;

server {
listen       80;
server_name  image.damon-liu.cn;
location / {
root C:/Damon/images;
        }
error_page 500 502503 504  /50x.html;
location = /50x.html {
root   html;
        }
    }

这里给出的例子的意思是:当收到对image.damon-liu.cn域名的http请求访问时,转发请求到我们的C:/Damon/images文件夹。


3、HTTPS请求的访问配置

和http请求访问的处理方式类似,https请求访问我们需要监听443端口,同时给域名配置ssl证书(即配置crt证书文件和key密钥文件的路径)

为此,我们需要添加配置:

server {
#SSL 默认访问端口号为 443listen443 ssl;
#请填写绑定证书的域名server_name  image.damon-liu.cn;
#请填写证书文件的相对路径或绝对路径ssl_certificate ../ssl/damonimage/image.damon-liu.cn_bundle.crt; 
#请填写私钥文件的相对路径或绝对路径ssl_certificate_key ../ssl/damonimage/image.damon-liu.cn.key; 
ssl_session_timeout 5m;
#请按照以下套件配置,配置加密套件,写法遵循 openssl 标准。ssl_ciphersECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
#请按照以下协议配置ssl_protocols TLSv1.2 TLSv1.3;
ssl_prefer_server_ciphers on; 
location / {
root C:/Damon/images;
        }
error_page 500 502503 504  /50x.html;
location = /50x.html {
root   html;
        }
    }

这里给出的例子的意思是:当收到对image.damon-liu.cn域名的https请求访问时,转发请求到我们的C:/Damon/images文件夹。


4、实现强制HTTPS请求

实际使用场景中,用户不一定会使用https协议访问,这时候我们可以统一请求方式,将http请求统一转发为https请求。

为此,我们需要添加配置:

server {
listen 80;
#请填写绑定证书的域名server_name image.damon-liu.cn;
#把http的域名请求转成httpsreturn301 https://image.damon-liu.cn;
}
server {
listen443 ssl;
#请填写绑定证书的域名server_name sub.image.damon-liu.cn;
#把http的域名请求转成httpsreturn301 https://image.damon-liu.cn;
}

由配置可见,我们收到访问域名image.damon-liu.cn的http请求时会转发到https://image.damon-liu.cn站点。同时我们也可以监听443端口的https://sub.image.damon-liu.cn访问,将请求转发到https://image.damon-liu.cn站点。


三、Nginx实现单个或多个项目的反向代理

Nginx在实际项目开发的应用场景中非常多,主要是用来实现反向代理的功能。反向代理就是指用户访问某个ip端口备通过域名或者二级地址,无感转发到另一个全新的端口,展示那个端口上部署的项目。本文将介绍如何配置Nginx服务器实现反向代理。

1、Nginx反向代理逻辑

原理示意图如下:


2、实现单个项目反向代理

我们这里要配置Nginx\conf\nginx.conf文件。

找到sever的参数。

listen:监听的端口;

(监听端口需要避免占用,尤其是win-server,需要关闭IIS在80端口的默认项目)

server_name:监听的域名(填写localhost即为公网IP);

location里proxy_pass:设置转发的目标地址;

server {
listen       80;
server_name  localhost;
#charset koi8-r;#access_log  logs/host.access.log  main;location / {
http://124.xxx.xx.21:8080/pages/index.html;  # 设置转发的目标地址    }
#error_page  404              /404.html;# redirect server error pages to the static page /50x.html#error_page 500 502503 504  /50x.html;
location = /50x.html {
root   html;
    }
}

这里给出的例子的意思是:当收到公网IP的访问时,转发请求到http://124.xxx.xx.21:8080/pages/index.html


3、实现多个项目反向代理

下面是带有多个server的写法:

upstream lanxin{
server localhost:8080;
}
upstream damon{
server localhost:8081;
}
server {
listen       80;
server_name  lanxinyun.com;
location / {
proxy_passhttp://lanxin;
    }
error_page 500 502503 504  /50x.html;
location = /50x.html {
root   html;
    }
}
server {
listen       80;
server_namedamon-liu.work;
location / {
proxy_passhttp://damon;
    }
error_page 500 502503 504  /50x.html;
location = /50x.html {
root   html;
    }
}

80端口监听,当访问域名为lanxinyun.com时跳转到8080端口发布的项目,damon-liu.work域名访问则跳转到8081端口发布的项目。

通过反向代理,我们实现了同一端口的复用(通过Nginx配置不同的域名监听,跳转到不同的项目),这在项目中非常常见,是当代程序员必备技能点。


四、Nignx服务器配置SSL证书访问HTTPS

1、获取SSL证书

首先,需要获得有效的SSL证书。付费证书或使用免费的证书均可。我是腾讯云的服务器,在SSL证书模块里,可以直接下载。

下载好的压缩包包含如下几个文件:


我们后面会用到的是.pem结尾的证书文件和对应的.key结尾的密钥文件。


2、存储证书文件

我们需要把证书文件保存在Nginx安装目录下,可以直接放到conf文件夹里面,我这里放到的是外面(下图的ssl文件夹)。



3、修改Nginx配置

我们需要在conf\nginx.conf里增加配置:

① 增加https端口监听

配置443端口监听来自域名damon-liu.work的访问,如果访问来自于damon-liu.work域名,则转发请求到8081端口的项目。

upstream damon{
server localhost:8081;
}
server {
#SSL 默认访问端口号为 443listen443 ssl;
#请填写绑定证书的域名server_namedamon-liu.work;
#请填写证书文件的相对路径或绝对路径ssl_certificate ../ssl/damon/damon-liu.work_bundle.crt; 
#请填写私钥文件的相对路径或绝对路径ssl_certificate_key ../ssl/damon/damon-liu.work.key; 
ssl_session_timeout 5m;
#请按照以下套件配置,配置加密套件,写法遵循 openssl 标准。ssl_ciphersECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
#请按照以下协议配置ssl_protocols TLSv1.2 TLSv1.3;
ssl_prefer_server_ciphers on; 
location / {
proxy_passhttp://damon;
    }
error_page 500 502503 504  /50x.html;
location = /50x.html {
root   html;
    }
}

② 实现http到https的自动跳转(可选)

配置非HTTPS协议的域名访问自动跳转到HTTPS协议下。HTTP协议的域名访问的是默认80端口,那我们为80端口创造监听,转发到HTTPS协议的访问路径。

server {
listen 80;
#请填写绑定证书的域名server_namedamon-liu.work;
#把http的域名请求转成httpsreturn301 https://damon-liu.work; 
}
server {
listen 80;
#请填写绑定证书的域名server_name www.damon-liu.work;
#把http的域名请求转成httpsreturn301 https://damon-liu.work; 
}
server {
listen443 ssl;
#请填写绑定证书的域名server_name www.damon-liu.work;
#把http的域名请求转成httpsreturn301 https://damon-liu.work; 
}



4、重启Nginx服务器,测试访问

浏览器输入http://damon-liu.work,看到自动变成https协议,并且转发到我们8081端口上的项目了。

五、实现HTTP自动跳转到HTTPS

1、配置Nginx

实现起来其实很简单,只需要我们在conf\nginx.conf里增加端口监听并转发的配置:

server {
listen 80;
#请填写绑定证书的域名server_namedamon-liu.work;
#把http的域名请求转成httpsreturn301 https://damon-liu.work; 
}
server {
listen 80;
#请填写绑定证书的域名server_name www.damon-liu.work;
#把http的域名请求转成httpsreturn301 https://damon-liu.work; 
}
server {
listen443 ssl;
#请填写绑定证书的域名server_name www.damon-liu.work;
#把http的域名请求转成httpsreturn301 https://damon-liu.work; 
}



2、重启Nginx服务器测试访问

浏览器输入http://damon-liu.work,看到自动变成https协议,并且转发到我们的项目了。

目录
相关文章
|
7天前
|
弹性计算 负载均衡 网络协议
ECS中实现nginx4层7层负载均衡和ALB/NLB原SLB负载均衡
通过本文的介绍,希望您能深入理解并掌握如何在ECS中实现Nginx四层和七层负载均衡,以及如何使用ALB和NLB进行高效的负载均衡配置,以提高系统的性能和可靠性。
43 9
|
20天前
|
存储 编解码 应用服务中间件
使用Nginx搭建流媒体服务器
本文介绍了流媒体服务器的特性及各种流媒体传输协议的适用场景,并详细阐述了使用 nginx-http-flv-module 扩展Nginx作为流媒体服务器的详细步骤,并提供了在VLC,flv.js,hls.js下的流媒体拉流播放示例。
95 1
|
29天前
|
负载均衡 监控 应用服务中间件
配置Nginx反向代理时如何指定后端服务器的权重?
配置Nginx反向代理时如何指定后端服务器的权重?
49 4
|
4月前
|
Ubuntu 应用服务中间件 Linux
在Linux中,如何配置Web服务器(如Apache或Nginx)?
在Linux中,如何配置Web服务器(如Apache或Nginx)?
|
4月前
|
负载均衡 应用服务中间件 Linux
"揭晓nginx的神秘力量:如何实现反向代理与负载均衡,拯救服务器于水火?"
【8月更文挑战第20天】在Linux环境下,nginx作为高性能HTTP服务器与反向代理工具,在网站优化及服务器负载均衡中扮演重要角色。本文通过电商平台案例,解析nginx如何解决服务器压力大、访问慢的问题。首先介绍反向代理原理,即客户端请求经由代理服务器转发至内部服务器,隐藏真实服务器地址;并给出配置示例。接着讲解负载均衡原理,通过将请求分发到多个服务器来分散负载,同样附有配置实例。实践表明,采用nginx后,不仅服务器压力得到缓解,还提升了访问速度与系统稳定性。
106 3
|
4月前
|
应用服务中间件 Linux 网络安全
在Linux中,如何配置Apache或Nginx Web服务器?
在Linux中,如何配置Apache或Nginx Web服务器?
|
弹性计算 安全 应用服务中间件
ECS动手搭建Nginx
在ECS的centos7上搭建一个Nginx
2070 7
ECS动手搭建Nginx
|
5天前
|
弹性计算 运维 安全
阿里云轻量应用服务器与ECS的区别及选择指南
轻量应用服务器和云服务器ECS(Elastic Compute Service)是两款颇受欢迎的产品。本文将对这两者进行详细的对比,帮助用户更好地理解它们之间的区别,并根据自身需求做出明智的选择。
|
6天前
|
SQL 弹性计算 安全
阿里云上云优选与飞天加速计划活动区别及购买云服务器后续必做功课参考
对于很多用户来说,购买云服务器通常都是通过阿里云当下的各种活动来购买,这就有必要了解这些活动的区别,同时由于活动内的云服务器购买之后还需要单独购买并挂载数据盘,还需要设置远程密码以及安全组等操作之后才能正常使用云服务器。本文就为大家介绍一下目前比较热门的上云优选与飞天加速计划两个活动的区别,以及通过活动来购买云服务器之后的一些必做功课,确保云服务器可以正常使用,以供参考。
|
9天前
|
弹性计算 安全 开发工具
灵码评测-阿里云提供的ECS python3 sdk做安全组管理
批量变更阿里云ECS安全组策略(批量变更)
下一篇
DataWorks