当前位置:   article > 正文

Nginx的安装与使用入门_nginx resolver

nginx resolver

 Nginx官方网站    中文    英文

  1. #这里好像没法搜;举几个例子:
  2. resolver:位于 HTTP Core模块*
  3. proxy_pass:位于 HTTP Proxy 模块

一、Nginx的安装

1、pcre依赖安装

官网下载:这里下载8.37版本,得到 pcre-8.37.tar.gz 上传到linux机器。

https://sourceforge.net/p/pcre/activity/?page=0&limit=100#5a81db4a5fcbc934232f5f55
  1. #解压缩
  2. tar zxvf pcre-8.37.tar.gz
  3. cd pcre-8.37
  4. #检查 与 安装
  5. ./configure
  6. make && make install
  7. #验证安装成功
  8. pcre-config --version

如下图即为安装成功

2、openssl、zlib依赖安装

  1. #执行yum一次性安装
  2. yum -y install make zlib zlib-devel gcc-c++ libtool openssl openssl-devel

如果出现“Multilib version problems found.”的报错,就按照提示加上“--setopt=protected_multilib=false”。

yum -y install make zlib zlib-devel gcc-c++ libtool  openssl openssl-devel --setopt=protected_multilib=false

没有明显报错应该就是ok的。

3、Nginx的安装与启动

(1) 官网 下载对应版本

  1. #这里下载的是1.12.2版本
  2. wget http://nginx.org/download/nginx-1.12.2.tar.gz
  3. #解压缩:
  4. tar zxvf nginx-1.12.2.tar.gz
  5. #安装
  6. cd nginx-1.12.2
  7. ./configure
  8. make && make install

如下是正常安装:

 安装后在 /usr/local 路径下多了个 nginx 目录;

cd nginx  里面的sbin目录内有可执行文件nginx;这个就是启动nginx的可执行文件了。

(2)启动

  1. 4)启动nginx
  2. cd /usr/local/nginx/sbin
  3. ./nginx

4、验证安装成功

(1)查看进程是否ok,如下即为符合预期的结果。

 (2)浏览器访问验证

在nginx/conf/nginx.conf中可以看到其默认监听的是80端口,如下:

注意:./conf/nginx.conf就是nginx的配置文件。

 浏览器我们直接输入目标Linux机器的公网ip,如下效果就说明部署成功了。

5、注意事项

情况一:如果是云服务器的话可能要在安全组放开80端口;

情况二:如果开启防火墙的话还要住下下给防火墙开放对应端口。

关于防火墙配置命令参见  防火墙相关命令_焱齿的博客-CSDN博客

二、Nginx常用命令

前言:使用nginx操作命令的前提条件是:必须进入nginx的目录。

cd /usr/local/nginx/sbin

2、常用命令

  1. #查看nginx版本号
  2. ./nginx -v
  3. #启动nginx
  4. ./nginx
  5. #关闭nginx
  6. ./nginx -s stop
  7. #重新加载nginx(如果修改nginx.conf中的配置,又不想重启nginx可以执行重加载)
  8. ./nginx -s reload

三、Nginx的配置文件

前言:nginx的配置文件路径为 /usr/local/nginx/conf/nginx.conf

nginx文件的组成主要包括三部分:

1、第一部分:全局块

配置文件开头至events块之间的内容,主要设置一些影响nginx服务器整体运行的配置指令。包括配置运行Nginx服务器的用户(组)、允许生成的worker preocess数,进程PID存放路径、日志存放路径和类型以及配置文件引入等。例如:

worker_processes  1;

        这是Nginx服务器并发处理服务的关键配置,worker_precesses值越大,可以支持的并发处理量也越多。注:但是会受到硬件、软件等设备的制约。

2、第二部分:events块

        events块主要影响Nginx服务器与用户的网络连接,常用的设置包括是否开启对多 work process下的网络连接进行序列化,是否运行同时允许接受多个网络连接,选取哪种时间驱动模型来处理连接请求,每个work process可以同时支持的最大连接数等。如下:

worker_connections  1024;

表示每个work process支持的最大链接数为1024.

注:这部分的配置对Nginx性能影响较大,在实际使用中应灵活配置

3、第三部分:http块

Nginx服务器中配置最频繁的部分。其有包含两部分:http全局快、server块。例如可以在此块中include其他路径的配置文件。

include /usr/local/services/zs_nginx_conf-1.0/conf/*.conf;

(1)http全局块

        http全局快配置的指令包括文件引入、MIME-TYPE定义、日志自定义、连接超时时间、单链接请求数上限等。

(2)server块

        和虚拟主机有密切联系。注:从用户角度,虚拟主机就和一台独立的物理主机是一样的。

        每个http块可以包括多个server块,而每个server块就相当于一个虚拟主机。

        每个server块也分为全局server块,一级可以同时包含多个location块。

注:不同的server不能ip:port同时相同!!!!

  1. #user nobody;
  2. worker_processes 1;
  3. #error_log logs/error.log;
  4. #error_log logs/error.log notice;
  5. #error_log logs/error.log info;
  6. #pid logs/nginx.pid;
  7. events {
  8. worker_connections 1024;
  9. }
  10. http {
  11. include mime.types;
  12. default_type application/octet-stream;
  13. #log_format main '$remote_addr - $remote_user [$time_local] "$request" '
  14. # '$status $body_bytes_sent "$http_referer" '
  15. # '"$http_user_agent" "$http_x_forwarded_for"';
  16. #access_log logs/access.log main;
  17. sendfile on;
  18. #tcp_nopush on;
  19. #keepalive_timeout 0;
  20. keepalive_timeout 65;
  21. #gzip on;
  22. server {
  23. listen 80;
  24. server_name localhost;
  25. #charset koi8-r;
  26. #access_log logs/host.access.log main;
  27. location / {
  28. root html;
  29. index index.html index.htm;
  30. }
  31. #error_page 404 /404.html;
  32. # redirect server error pages to the static page /50x.html
  33. #
  34. error_page 500 502 503 504 /50x.html;
  35. location = /50x.html {
  36. root html;
  37. }
  38. # proxy the PHP scripts to Apache listening on 127.0.0.1:80
  39. #
  40. #location ~ \.php$ {
  41. # proxy_pass http://127.0.0.1;
  42. #}
  43. # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
  44. #
  45. #location ~ \.php$ {
  46. # root html;
  47. # fastcgi_pass 127.0.0.1:9000;
  48. # fastcgi_index index.php;
  49. # fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;
  50. # include fastcgi_params;
  51. #}
  52. # deny access to .htaccess files, if Apache's document root
  53. # concurs with nginx's one
  54. #
  55. #location ~ /\.ht {
  56. # deny all;
  57. #}
  58. }
  59. # another virtual host using mix of IP-, name-, and port-based configuration
  60. #
  61. #server {
  62. # listen 8000;
  63. # listen somename:8080;
  64. # server_name somename alias another.alias;
  65. # location / {
  66. # root html;
  67. # index index.html index.htm;
  68. # }
  69. #}
  70. # HTTPS server
  71. #
  72. #server {
  73. # listen 443 ssl;
  74. # server_name localhost;
  75. # ssl_certificate cert.pem;
  76. # ssl_certificate_key cert.key;
  77. # ssl_session_cache shared:SSL:1m;
  78. # ssl_session_timeout 5m;
  79. # ssl_ciphers HIGH:!aNULL:!MD5;
  80. # ssl_prefer_server_ciphers on;
  81. # location / {
  82. # root html;
  83. # index index.html index.htm;
  84. # }
  85. #}
  86. }

四、Nginx配置举例-代理上网(透明代理)

1、目标。

部署Nginx作为透明代理代理上网。相当于请求打到nginx后,nginx直接转发到互联网。

  1. http {
  2. resolver 8.8.8.8;
  3. server {
  4. listen 7765;
  5. location / {
  6. proxy_pass http://$http_host$request_uri;
  7. }
  8. }
  9. }

nginx实现代理上网,有三个关键点必须注意,其余的配置跟普通的nginx一样:
1.增加dns解析resolver;
2.增加无server_name名的server;
3.proxy_pass指令;

注:8.8.8.8是google提供的一个免费的dns服务,一般都这么写。

wget验证通过代理访问网页。

wget -c -r -np -k -L -p -e "http_proxy=http://118.xxx.193.69:7765" www.baidu.com

注意:

默认开源版本的nginx是不支持https请求的。通常浏览器都会讲讲请求重定向为https,你会发现凡是重定向为https的网页你都是打不开的。

例如:www.baidu.com  打不开; www.atguigu.com/ 之类的网站就可以打开。

为了nginx支持代理https协议,参见 这里

2、或者使用include也是可以的

在nginx.conf路径下新建proxy.conf文件,内容如下:

  1. server {
  2. listen 7765;
  3. resolver 8.8.8.8;
  4. location / {
  5. #proxy_pass http://$http_host$request_uri;
  6. proxy_pass $scheme://$host$request_uri;
  7. root html;
  8. index index.html index.htm;
  9. }
  10. }

nginx.conf中在server平齐的位置添加include语句.重启nginx即可。

 include /usr/local/nginx/conf/proxy.conf;

五、Nginx配置举例-反向代理1

1、准备与目标

如前所述,安装了httpd服务器。因为nginx占用的80端口,所以这里配置httpd监听的8080端口;而且我们放置了一些网页资源,通过8080端口可以访问相应资源。

 接下来我们配置一个反向代理,通过访问nginx默认监听的80端口就可以访问到httpd的8080端口提供的资源。

        在此之前。为了ip不直接暴露在url中我们额外配置一下浏览器所在机器的<ip,域名>映射。

        对于mac电脑修改起来很简单。

  1. vim /etc/hosts
  2. #添加如下记录就好
  3. 118.xxx.xxx.69 www.shuozhuo.com

        测试一下确实可以通过域名访问了。

 这里想把端口8080去掉,会发现是不行的。接下来我们要做的就是默认访问也能访问到这个资源。

2、具体配置与测试

 如下。在nginx.conf下添加如下两句。

  1. #就是nginx部署机器的ip
  2. server_name 118.195.193.69;
  3. #将nginx 80端口监听的符合”location /“的请求都转发到本机的8080端口
  4. proxy_pass http://127.0.0.1:8080;

 重新加载nginx。

./nginx -s reload

之后按照默认端口访问就是可以的了。如下:

在nginx/logs目录下的access.log也是可以看到每次操作的日志记录的.

3、结论

        现在这里实现了隐藏真实服务器的效果,其实就是一个反向代理了。

六、Nginx配置举例-反向代理2

1、前期准备&目标

安装并配置好tomcat服务器;默认开放8081端口。准备好对应的网页!

  1. #tomcat页面路径下创建 注:安装目录/webapps
  2. /tomcat/a.html
  3. //网页内容为
  4. <h1>Welcome to tomcat!!</h1>
  5. #httpd页面路径下创建 注:默认是绝对路径 /var/www/html
  6. /httpd/a.html
  7. //网页内容为
  8. <h1>Welcome to httpd!!</h1>

安装并配置好httpd服务器;默认开放8080端口。准备好对应的网页!

通过请求url路径路由到不同的web服务器。具体来说:路径中含有/tomcat就路由到tomcat、路径中含有/httpd就路由到httpd服务器。

2、配置nginx

 nginx.conf中添加如下server(监听9000端口)。

  1. server {
  2. listen 9000;
  3. server_name 118.195.193.69;
  4. location ~ /httpd/{
  5. proxy_pass http://127.0.0.1:8080;
  6. }
  7. location ~ /tomcat/{
  8. proxy_pass http://127.0.0.1:8081;
  9. }
  10. }
  11. #解释
  12. ①这段配置的含义是监听本机(118.195.193.69)的9000端口。
  13. ②请求uri匹配httpd字段就把请求转发到本机(127.0.0.1)的8080端口;就是httpd服务监听的端口。
  14. ③请求uri匹配tomocat字段就把请求转发到本机(127.0.0.1)的8081端口;就是tomcat服务监听的端口。
  15. #其他关键字
  16. (1)server→resolver:resolver的作用是指定DNS机器;例如:
  17. server{
  18. resolver 10.xxx.xx.54 10.xxx.xx.15 ipv6=off;
  19. }
  20. #关键词解释
  21. (1)proxy_pass:为代理转发的关键词
  22. (2)root: 用于指定资源的root路径.如下例子中,实际的访问路径应该是 web服务器默认路径/opt/test/demo
  23. location /demo {
  24. root /opt/test;
  25. }
  26. (3)expires: 配置缓存时间
  27. expires 30s; #缓存30
  28. expires 30m; #缓存30分钟
  29. expires 2h; #缓存2小时
  30. expires 30d; #缓存30
  31. 例如:
  32. location ~ /tomcat/{
  33. proxy_pass http://127.0.0.1:8081;
  34. expires 30d;
  35. }

#配置解释
(1)~ :用于表示uri包含正则表达式,并且区分大小写
(2)~* :用于表示uri包含正则表达式,不区分大小写
(3)= :用于不包含正则表达式的uri前,要求请求字符串与uri严格匹配;如果匹配成功就会立即处理,不在继续往下搜索。
(4)^~ : 用于不包含正则表达式的uri前,要求Nginx找到表示uri和请求字符串匹配度最高的location后,立即使用此location处理请求,而不使用location块中的正则uri和请求字符串做匹配。

匹配优先级: = 、 ^~ 、 ~/~*、不带符号。

3、验证效果

重启nginx

./nginx -s reload

访问效果如下:

 

六、Nginx配置举例-负载均衡

负载均衡本质也是反向代理的一种!!!

  1. #http块中加入如下upstream
  2. upstream shuozhuosvr{
  3. # ip_hash;
  4. server 118.195.193.69:8080 weight=1;
  5. server 118.195.193.69:8081 weight=2;
  6. }
  7. #server块中添加如下配置
  8. location / {
  9. root html;
  10. proxy_pass http://shuozhuosvr ;
  11. index index.html index.htm;
  12. }
  13. #upstream基本语法
  14. (1)一个upstream需要设置一个名称,这个名称可以在server里面当做proxy主机使用。
  15. (2)一个upstream可以设置多个server,默认Nginx会轮询每个server,从而达到最基本的负载均衡效果。
  16. (3) weight:每个server可以设置weight字段,实现简易的有权重的负载均衡。
  17. (4) max_fails: 每个server可以设置max_fails字段;请求server发生错误失败数会累加,如果达到max_fails后,nginx会标记这个server为故障状态从而不去请求该server。
  18. (5) fail_timeout: 前面说过了max_fails是请求server错误次数,如果达到了max_fails次数之后server会被标记为故障状态,那么多长时间会重新尝试呢?这个fail_timeout就是这个时间了,在达到max_fails次数之后server进入故障状态,而后在fail_timeout时间之后会被重新标记为正常状态。默认情况下,fail_timeout的时间是10秒。
  19. (6)backup: 这个是备用服务器参数,可以为一个upstream设置一个backup的server,在生产server全部都出问题之后,可以自动切换到备用server上,为回复服务争取时间。
  20. upstream default {
  21. server ip1:9000 max_fails=5;
  22. server ip2:9000 max_fails=3;
  23. }
  24. upstream default {
  25. server ip1:9000 max_fails=5 fail_timeout=100;
  26. server ip2:9000 max_fails=3 fail_timeout=60;
  27. }
  28. upstream default {
  29. server ip1:9000 max_fails=5 fail_timeout=100;
  30. server ip2:9000 max_fails=3 fail_timeout=60;
  31. server backupip:9000 backup;
  32. }
  33. #其他可用策略
  34. (1)轮询(默认)
  35. (2)weight 设置权重
  36. (3)ip_hash :每个请求按照访问ip的hash结果进行分配。这样每个固定的访客只会访问固定的后端服务器,可以解决session等问题。
  37. upstream shuozhuosvr{
  38. ip_hash;
  39. server 118.195.193.69:8080;
  40. server 118.195.193.69:8081;
  41. }
  42. (4)fair: 按照后端服务器的相应时间来分配请求,相应时间越短越优先分配。
  43. upstream shuozhuosvr{
  44. server 118.195.193.69:8080;
  45. server 118.195.193.69:8081;
  46. fair
  47. }

七、Nginx高可用——结合keepalived

结合keepalived就可以实现自动的主备切换效果!!

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Guff_9hys/article/detail/785461
推荐阅读
相关标签
  

闽ICP备14008679号