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使用场景及相关配置相关推荐

  1. Nginx常见场景代理转发配置

    注意:本文出自 "阿飞"的博客 ,如果要转载本文章,请与作者联系! 并注明来源: Nginx常见场景代理转发配置_阿飞的专栏-CSDN博客_nginx 代理转发配置 在这里分享的不 ...

  2. Keepalived+Nginx实现高可用,反向代理---Keepalived安装及相关配置

    [前言] 在博文<智能一代云平台(十五):Keepalived+Nginx实现高可用,反向代理---Nginx安装及配置>中介绍了Nginx的安装及相关配置的信息,由于篇幅原因不能用一篇博 ...

  3. LNMP(nginx防盗链,访问控制,解析php相关配置,Nginx代理,常见502问题)

    一.nginx防盗链 nginx防盗链: [root@lnmp ~]# vim /usr/local/nginx/conf/vhost/test.com.conf   添加以下内容 location ...

  4. nginx的全局配置和HTTP相关配置

    目录 资源类型: 网站访问量 网站访问量统计的重要指标 HTTP1.0和1.1的问题 HTTP2协议 HTTP 请求访问的完整过程 HTTP 请求报文 http协议状态码分类 http协议常用的!!状 ...

  5. Nginx防盗链,Nginx访问控制, Nginx解析php相关配置, Nginx代理

    2019独角兽企业重金招聘Python工程师标准>>> Nginx防盗链 Nginx防盗链配置需要与不记录日志和过期时间结合在一起,因为都用到了location. 打开配置文件,注释 ...

  6. Nginx防盗链、访问控制、Nginx解析PHP相关配置、Nginx代理

    2019独角兽企业重金招聘Python工程师标准>>> Nginx防盗链 在配置文件里写入以下内容: 用curl测试 访问控制 Nginx限制某些IP不能访问或者只允许某些IP访问. ...

  7. nginx中文url php,使Nginx服务器支持中文URL的相关配置详解

    关于中文URL已经是老话题了,到目前为止依然有很大一部分SEOer都会说不要使用中文URL,对搜索引擎不友好. 不过,那已经是以前的事了,谷歌很早就支持了中文URL,当时百度技术没有跟上,URL中会出 ...

  8. linux的Nginx防盗链、Nginx访问控制、Nginx解析php相关配置、Nginx代理介绍

    Nginx防盗链 思路与httpd一样,配置也不难,但要与过期时间.不记录日志配置结合起来. 1.配置文件内容 [root@gary-tao test.com]# vim /usr/local/ngi ...

  9. 企业常用的Nginx网站服务相关配置

    目录 一,内容概述 Nginx Apache 二,Apache三种工作模式 三,Linux的I/O 四,编译安装Nginx服务 五,认识 Nginx 服务的主配置文件 nginx.conf 六,访问状 ...

最新文章

  1. Hadoop中的压缩Codec
  2. UVA10780幂和阶乘
  3. Discuz代码研究-编码规范
  4. IntersectionObserve初试
  5. 反序列化层遍历二叉树
  6. [python opencv 计算机视觉零基础到实战] 十六、用opencv画画
  7. P4172-[WC2006]水管局长【LCT,最小生成树】
  8. Windows下运行jekyll,编码已不再是问题
  9. MongoDB教程-使用Node.js从头开始CRUD应用
  10. java客户姓名添加和查找_java类与对象 演练 客户姓名添加与查看
  11. Chorme Error 312 (net::ERR_UNSAFE_PORT) | Chorme 不信任端口
  12. 小米、360之后,货拉拉被曝已启动造车项目!官方回应
  13. Python AI和机器学习库
  14. link要使用全路径
  15. MJKDZ PS2手柄(BK2461):驱动安装问题及解决
  16. 面试题汇总2(吐血整理)
  17. .NetCore异常:Could not load file or assembly ‘Microsoft.AI.Web‘ or one of its dependencies. The system
  18. 记一次百度知识图谱面试经历(cold)
  19. 1.5 Nginx进程模型解析
  20. 玩转curl指令—测试简单的HTTP接口

热门文章

  1. AnyConnect苹果IOS系统Iphone手机的设置教程
  2. 缘系天涯,一枕残梦千里
  3. 一张图学Python
  4. MacBook 安装7zip
  5. ata职业技能评价证书考出来有啥用?
  6. 这些全球知名的设计网站,你用过的有哪些?
  7. 林纳斯·托瓦兹和Linux行为准则:揭穿7个谬论
  8. 【笔试——腾讯2021实习笔试题第二次2021.4.4】第3题 n人高空过钢索
  9. 使用idea搭建ssm框架,并实现简单的CRUD和分页查询功能
  10. Excel宏(VBA)类模块的创建与调用