Nginx使用场景及相关配置
Nginx使用场景及相关配置
- 1 基本配置介绍
- 1.1 配置文件结构
- 1.2 各配置块说明
- 2 nginx常用命令
- 2.1常用命令
- 2.2 详解及示例
- 2.2.1 验证配置是否正确
- 2.2.2 查看Nginx的详细的版本号
- 2.2.3 查看配置编译阶段的信息
- 2.2.4 启动
- 2.2.5 快速停止
- 2.2.6 正常停止
- 2.2.7 重载配置文件
- 3 使用场景
- 3.1 HTTP服务器
- 3.1.1 功能
- 3.1.2 配置方式
- 3.1.3 示例
- 3.2 反向代理
- 3.2.1 功能
- 3.2.2 配置方式
- 3.2.3 示例
- 3.3 负载均衡
- 3.3.1 功能
- 3.3.2 配置方式
- 3.3.3 示例
- 3.4 正向代理
- 3.4.1 功能
- 3.4.2 配置方式
- 3.5 虚拟主机
- 3.5.1 功能
- 3.5.2 配置方式
- 3.5.2.1 基于端口的虚拟主机
- 3.5.2.2 基于域名的虚拟主机
- 3.6 socket代理
- 3.6.1 功能介绍及平滑安装stream模块
- 3.6.1.1 查看是否安装stream模块
- 3.6.1.2 平滑安装stream模块
- 3.6.2 配置方式
https://blog.csdn.net/qq_26012495/article/details/98367624
proxy_pass的url加不加“/”的问题:
https://www.cnblogs.com/kevingrace/p/6566119.html
正向代理:
https://blog.51cto.com/u_7603402/2422469
https://blog.csdn.net/k417699481/article/details/115672191?spm=1001.2101.3001.6650.5&utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromBaidu%7Edefault-5.highlightwordscore&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromBaidu%7Edefault-5.highlightwordscore
常用命令:
https://blog.csdn.net/cckavin/article/details/103739054
平滑安装nginx:
https://www.cnblogs.com/crysmile/p/9565048.html
1 基本配置介绍
1.1 配置文件结构
nginx的主配置文件是安装目录下conf文件夹下的nginx.conf,该配置文件的结构
... // 全局块events { // events块...
}http { // http块... // http全局块server { // server块... // server全局块location [Pattern] { // location块...}location [Pattern] {...}}server {...location [Pattern] {...}location [Pattern] {...}}...
}
1.2 各配置块说明
结构名称 | 说明 |
---|---|
全局块 | 主要包括配置运行Nginx服务器的用户、允许生成的worker process数、日志存放路径、配置文件引入等;worker process值越大,支持的并发量越高。 |
events块 | 设置每个work process最大连接数等,该部分主要影响Nginx性能。 |
http块 | 包含http全局块、server块、server全局块、location块 |
– http全局块 | 包含日志定义、超时时间等 |
– server块 | 每个server块相当于一个虚拟主机 |
– server全局块 | 配置本虚拟机监听配置 |
– location块 | 基于Nginx接收到的请求,对其进行匹配处理、地址定向、数据缓存等 |
2 nginx常用命令
2.1常用命令
以下命令需要在nginx的安装目录的sbin文件夹下执行。
命令 | 说明 |
---|---|
验证配置是否正确 | ./nginx -t |
查看Nginx的详细的版本号 | ./nginx -V 或 ./nginx -v |
查看配置编译阶段的信息 | ./nginx -V |
启动命令 | ./nginx |
快速停止或关闭 | ./nginx -s stop |
正常停止或关闭 | ./nginx -s quit |
配置文件修改重装载命令 | ./nginx -s reload |
2.2 详解及示例
2.2.1 验证配置是否正确
在启动Nginx前可以使用 -t参数测试配置文件(nginx.conf)是否正确。
[root@test ~]# cd /usr/local/nginx/sbin/
[root@test sbin]# ./nginx -t
nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful
[root@test sbin]#
使用 -q 参数可以不输出 error 级别以下的信息。
./nginx -t -q
2.2.2 查看Nginx的详细的版本号
[root@test sbin]# cd /usr/local/nginx/sbin/
[root@test sbin]# ./nginx -V
nginx version: nginx/1.18.0
built by gcc 4.8.5 20150623 (Red Hat 4.8.5-16) (GCC)
configure arguments: --prefix=/usr/local/nginx
[root@test sbin]# ./nginx -v
nginx version: nginx/1.18.0
[root@test sbin]#
2.2.3 查看配置编译阶段的信息
[root@test sbin]# cd /usr/local/nginx/sbin/
[root@test sbin]# ./nginx -V
nginx version: nginx/1.18.0
built by gcc 4.8.5 20150623 (Red Hat 4.8.5-16) (GCC)
configure arguments: --prefix=/usr/local/nginx
[root@test sbin]#
2.2.4 启动
[root@test sbin]# cd /usr/local/nginx/sbin/
[root@test sbin]# ./nginx
[root@test sbin]#
2.2.5 快速停止
-s stop命令会告诉Nginx向正在运行的Nginx master进程发送TERM信号量来快速的关闭Nginx服务。
[root@test sbin]# cd /usr/local/nginx/sbin/
[root@test sbin]# ./nginx -s stop
[root@test sbin]#
2.2.6 正常停止
-s quit命令会告诉Nginx正常处理完所有任务(关闭监听接口,停止接收新的链接,把当前的所有连接全部处理完)再停止进程。
[root@test sbin]# cd /usr/local/nginx/sbin/
[root@test sbin]# ./nginx -s quit
[root@test sbin]#
2.2.7 重载配置文件
-s reload参数会重新加载nginx.conf文件——先检查配置是否有误,如果没有就使用 quit命令停止服务,然后再重新启动。
[root@test sbin]# cd /usr/local/nginx/sbin/
[root@test sbin]# ./nginx -s reload
[root@test sbin]#
3 使用场景
3.1 HTTP服务器
3.1.1 功能
将服务器上的静态资源如html、css、js、jpg等,通过HTTP协议返回给浏览器客户端。可通过此方式部署前端项目。
3.1.2 配置方式
将静态资源文件上传到服务器,使用root指令或者alias指令指向文件所在位置;注意root指令于alias指令的区别:
对比项 | root | alias |
---|---|---|
语法 | root path | alias path |
配置段 | http、server、location、if | location |
默认值 | root html | |
处理结果 | root值 + location值 | alias值 |
必须“/”结束 | 否 | 是 |
3.1.3 示例
访问地址前缀为:http://test.com/
实际访问的服务器地址:/opt/h5/
server {listen 8080(端口号);server_name test.com(ip或者域名);location / {root /opt/h5;}}
访问地址前缀为:http://test.com/picture/
实际访问的服务器地址:/opt/h5/picture/
server {listen 8080(端口号);server_name test.com(ip或者域名);location /picture {root /opt/h5/;}}
访问地址前缀为:http://test.com/picture/
实际访问的服务器地址:/opt/h5/picture/
server {listen 8080(端口号);server_name test.com(ip或者域名);location /picture {alias /opt/h5/picture/;}}
3.2 反向代理
3.2.1 功能
在项目中,往往需要代理服务器接收外部网络的访问请求,将请求转发给内部服务器,并接收到的内部服务器返回的结果返回给请求的客户端。代理服务器和内部服务所在服务器可以是不同的服务器,也可以是同一个服务器,不同的端口。
3.2.2 配置方式
通过proxy_pass指令指向代理服务的地址,注意通过location来区分不同的服务。
注意:配置proxy_pass时,当在后面的url加上了/,相当于是绝对根路径,则nginx不会把location中匹配的路径部分代理走;如果没有/,则会把匹配的路径部分也给代理走。
server {listen 8080(端口号);server_name test.com(ip或者域名);location /test1 {proxy_pass http://192.168.3.100:8081/;}
}
3.2.3 示例
server {listen 8080(端口号);server_name test.com(ip或者域名);# 请求地址 http://test.com/test1/# 实际访问地址 http://192.168.3.100:8081/location /test1 {proxy_pass http://192.168.3.100:8081/;}# 请求地址 http://test.com/test2/# 实际访问地址 http://192.168.3.100:8082/location /test2 {proxy_pass http://192.168.3.100:8082/;}# 请求地址 http://test.com/test3/# 实际访问地址 http://192.168.3.101:8080/location /test3 {proxy_pass http://192.168.3.101:8080/;}# 请求地址 http://test.com/test3/# 实际访问地址 http://192.168.3.101:8080/test4/location /test4 {proxy_pass http://192.168.3.101:8082;}}
3.3 负载均衡
3.3.1 功能
将访问的请求分摊到多个节点服务器上去执行。
3.3.2 配置方式
通过upstream块配置负载的服务器地址信息。
Nginx目前支持自带3种负载均衡策略,还有2种常用的第三方策略,使用第三方策略需要安装第三方模块。
http {server {listen 80;server_name test.com;location /test {# 下面配置的test与upstream后面的值对应,实际访问的服务地址为upstream中server的地址proxy_pass http://test/;}}upstream test {server 192.168.3.100:8080 weight=1;server 192.168.3.101:8080 weight=1;}
}
3.3.3 示例
http {server {listen 80;server_name test.com;location /test {proxy_pass http://test/;}location /test2 {proxy_pass http://test2/;}}# 轮询(默认)upstream test {server 192.168.3.100:8080;server 192.168.3.101:8080;}# 权重 (权重分配的不同,分摊的请求比重就不同)upstream test2 {server 192.168.3.100:8082 weight=1;server 192.168.3.101:8082 weight=1;}# 下边三种作为了解#ip_hash upstream test {ip_hash;server 192.168.3.100:8080;server 192.168.3.101:8080;}#fair(第三方)upstream test {fair;server 192.168.3.100:8080;server 192.168.3.101:8080;}#url_hash(第三方)upstream test {hash $request_uri;hash_method crc32;server 192.168.3.100:8080;server 192.168.3.101:8080;}
3.4 正向代理
3.4.1 功能
客户端(PC)无法直接通过互联网或者内部局域网直接访问X资源(服务器),但是客户端能够直接访问一个代理服务器,而这个代理服务器能够访问到PC访问不了的X资源,于是我们先在PC上配置代理服务器的地址,PC把请求发送给代理服务器,让代理服务器去访问X资源,代理访问了X资源返回给PC,从而解决了无法访问的问题。
3.4.2 配置方式
server {listen 8088;resolver 114.114.114.114; #增加dns解析location / {proxy_pass http://$http_host$request_uri;}}
3.5 虚拟主机
3.5.1 功能
虚拟主机就是把一台物理服务器划分成多个”虚拟“的服务器,进而配置多个网站,这样可以实现只在一台服务器上安装一个nginx,达到运行多个网站的效果。
nginx下,一个server标签就是一个虚拟主机。
3.5.2 配置方式
3.5.2.1 基于端口的虚拟主机
多个虚拟主机的区分方式:端口号
访问方式:域名+端口号 或 ip地址+端口号
# 第一个虚拟主机server {listen 80;server_name test.com;location / {root /home/test1;}}# 第二个虚拟主机server {listen 8080;server_name test.com;location / {root /home/test2;}}
3.5.2.2 基于域名的虚拟主机
多个虚拟主机的区分方式:域名
访问方式:域名
# 第一个虚拟主机server {listen 80;server_name test.one.com;location / {root /home/test1;}}# 第二个虚拟主机server {listen 80;server_name test.two.com;location / {root /home/test2;}}
3.6 socket代理
3.6.1 功能介绍及平滑安装stream模块
该功能要使用nginx的ngx_stream_core_module模块,但是该模块在安装时不是默认构建的,需要在编译安装执行 ./configure时加上参数–with-stream。
3.6.1.1 查看是否安装stream模块
使用命令./nginx -V查看,如果在configure arguments后面没有出现–with-stream则说明没有安装此模块。
[root@test sbin]# cd /usr/local/nginx/sbin/
[root@test sbin]# ./nginx -V
nginx version: nginx/1.18.0
built by gcc 4.8.5 20150623 (Red Hat 4.8.5-16) (GCC)
configure arguments: --prefix=/usr/local/nginx
[root@test sbin]#
3.6.1.2 平滑安装stream模块
# 找到nginx源码目录,如此处nginx源码目录为:/home/nginx/nginx-1.18.0,即为编译命令执行目录
cd /home/nginx/nginx-1.18.0
# 执行编译命令
./configure --prefix=/usr/local/nginx --with-stream
# 执行make,此处一定不能使用make install命令,执行该命令会将原有nginx目录进行覆盖
make
# 关掉nginx
cd /usr/local/nginx/sbin/
./nginx -s stop
# 备份原有nginx二进制文件。
cp /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginx-no-strem
# 复制新编译好的nginx二进制文件。从此处nginx源码目录为:/usr/local/nginx-1.13.4。即为编译命令执行目录。
cp /home/nginx/nginx-1.18.0/objs/nginx /usr/local/nginx/sbin/nginx
# 重新启动服务
cd /usr/local/nginx/sbin/
./nginx
# 可以通过./nginx -V命令查看以下模块是否安装成功
3.6.2 配置方式
在events和http同级除,添加stream模块。
stream {# 日志格式log_format steamlog '$remote_addr [$time_local] ''$protocol $status $bytes_sent $bytes_received ''$session_time "$upstream_addr" ''"$upstream_bytes_sent" "$upstream_bytes_received" "$upstream_connect_time"';# 日志文件路径配置access_log logs/stream-access.log steamlog;# 错误日志路径配置error_log logs/stream-error.log;server {# 监听端口listen 46000;# socket转发地址proxy_pass 172.17.21.140:46000;}}
Nginx使用场景及相关配置相关推荐
- Nginx常见场景代理转发配置
注意:本文出自 "阿飞"的博客 ,如果要转载本文章,请与作者联系! 并注明来源: Nginx常见场景代理转发配置_阿飞的专栏-CSDN博客_nginx 代理转发配置 在这里分享的不 ...
- Keepalived+Nginx实现高可用,反向代理---Keepalived安装及相关配置
[前言] 在博文<智能一代云平台(十五):Keepalived+Nginx实现高可用,反向代理---Nginx安装及配置>中介绍了Nginx的安装及相关配置的信息,由于篇幅原因不能用一篇博 ...
- LNMP(nginx防盗链,访问控制,解析php相关配置,Nginx代理,常见502问题)
一.nginx防盗链 nginx防盗链: [root@lnmp ~]# vim /usr/local/nginx/conf/vhost/test.com.conf 添加以下内容 location ...
- nginx的全局配置和HTTP相关配置
目录 资源类型: 网站访问量 网站访问量统计的重要指标 HTTP1.0和1.1的问题 HTTP2协议 HTTP 请求访问的完整过程 HTTP 请求报文 http协议状态码分类 http协议常用的!!状 ...
- Nginx防盗链,Nginx访问控制, Nginx解析php相关配置, Nginx代理
2019独角兽企业重金招聘Python工程师标准>>> Nginx防盗链 Nginx防盗链配置需要与不记录日志和过期时间结合在一起,因为都用到了location. 打开配置文件,注释 ...
- Nginx防盗链、访问控制、Nginx解析PHP相关配置、Nginx代理
2019独角兽企业重金招聘Python工程师标准>>> Nginx防盗链 在配置文件里写入以下内容: 用curl测试 访问控制 Nginx限制某些IP不能访问或者只允许某些IP访问. ...
- nginx中文url php,使Nginx服务器支持中文URL的相关配置详解
关于中文URL已经是老话题了,到目前为止依然有很大一部分SEOer都会说不要使用中文URL,对搜索引擎不友好. 不过,那已经是以前的事了,谷歌很早就支持了中文URL,当时百度技术没有跟上,URL中会出 ...
- linux的Nginx防盗链、Nginx访问控制、Nginx解析php相关配置、Nginx代理介绍
Nginx防盗链 思路与httpd一样,配置也不难,但要与过期时间.不记录日志配置结合起来. 1.配置文件内容 [root@gary-tao test.com]# vim /usr/local/ngi ...
- 企业常用的Nginx网站服务相关配置
目录 一,内容概述 Nginx Apache 二,Apache三种工作模式 三,Linux的I/O 四,编译安装Nginx服务 五,认识 Nginx 服务的主配置文件 nginx.conf 六,访问状 ...
最新文章
- Hadoop中的压缩Codec
- UVA10780幂和阶乘
- Discuz代码研究-编码规范
- IntersectionObserve初试
- 反序列化层遍历二叉树
- [python opencv 计算机视觉零基础到实战] 十六、用opencv画画
- P4172-[WC2006]水管局长【LCT,最小生成树】
- Windows下运行jekyll,编码已不再是问题
- MongoDB教程-使用Node.js从头开始CRUD应用
- java客户姓名添加和查找_java类与对象 演练 客户姓名添加与查看
- Chorme Error 312 (net::ERR_UNSAFE_PORT) | Chorme 不信任端口
- 小米、360之后,货拉拉被曝已启动造车项目!官方回应
- Python AI和机器学习库
- link要使用全路径
- MJKDZ PS2手柄(BK2461):驱动安装问题及解决
- 面试题汇总2(吐血整理)
- .NetCore异常:Could not load file or assembly ‘Microsoft.AI.Web‘ or one of its dependencies. The system
- 记一次百度知识图谱面试经历(cold)
- 1.5 Nginx进程模型解析
- 玩转curl指令—测试简单的HTTP接口