赞
踩
- #这里好像没法搜;举几个例子:
- resolver:位于 HTTP Core模块*
- proxy_pass:位于 HTTP Proxy 模块
1、pcre依赖安装
官网下载:这里下载8.37版本,得到 pcre-8.37.tar.gz 上传到linux机器。
https://sourceforge.net/p/pcre/activity/?page=0&limit=100#5a81db4a5fcbc934232f5f55
- #解压缩
- tar zxvf pcre-8.37.tar.gz
- cd pcre-8.37
-
- #检查 与 安装
- ./configure
- make && make install
-
- #验证安装成功
- pcre-config --version
如下图即为安装成功
2、openssl、zlib依赖安装
- #执行yum一次性安装
- 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.12.2版本
- wget http://nginx.org/download/nginx-1.12.2.tar.gz
-
- #解压缩:
- tar zxvf nginx-1.12.2.tar.gz
-
- #安装
- cd nginx-1.12.2
- ./configure
- make && make install
如下是正常安装:
安装后在 /usr/local 路径下多了个 nginx 目录;
cd nginx 里面的sbin目录内有可执行文件nginx;这个就是启动nginx的可执行文件了。
(2)启动
- (4)启动nginx
- cd /usr/local/nginx/sbin
- ./nginx
4、验证安装成功
(1)查看进程是否ok,如下即为符合预期的结果。
(2)浏览器访问验证
在nginx/conf/nginx.conf中可以看到其默认监听的是80端口,如下:
注意:./conf/nginx.conf就是nginx的配置文件。
浏览器我们直接输入目标Linux机器的公网ip,如下效果就说明部署成功了。
5、注意事项
情况一:如果是云服务器的话可能要在安全组放开80端口;
情况二:如果开启防火墙的话还要住下下给防火墙开放对应端口。
关于防火墙配置命令参见 防火墙相关命令_焱齿的博客-CSDN博客
前言:使用nginx操作命令的前提条件是:必须进入nginx的目录。
cd /usr/local/nginx/sbin
2、常用命令
- #查看nginx版本号
- ./nginx -v
-
- #启动nginx
- ./nginx
-
- #关闭nginx
- ./nginx -s stop
-
- #重新加载nginx(如果修改nginx.conf中的配置,又不想重启nginx可以执行重加载)
- ./nginx -s reload
前言: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同时相同!!!!
- #user nobody;
- worker_processes 1;
-
- #error_log logs/error.log;
- #error_log logs/error.log notice;
- #error_log logs/error.log info;
-
- #pid logs/nginx.pid;
-
-
- events {
- worker_connections 1024;
- }
-
-
- http {
- include mime.types;
- default_type application/octet-stream;
-
- #log_format main '$remote_addr - $remote_user [$time_local] "$request" '
- # '$status $body_bytes_sent "$http_referer" '
- # '"$http_user_agent" "$http_x_forwarded_for"';
-
- #access_log logs/access.log main;
-
- sendfile on;
- #tcp_nopush on;
-
- #keepalive_timeout 0;
- keepalive_timeout 65;
-
- #gzip on;
-
- server {
- listen 80;
- server_name localhost;
-
- #charset koi8-r;
-
- #access_log logs/host.access.log main;
-
- location / {
- root html;
- index index.html index.htm;
- }
-
- #error_page 404 /404.html;
-
- # redirect server error pages to the static page /50x.html
- #
- error_page 500 502 503 504 /50x.html;
- location = /50x.html {
- root html;
- }
-
- # proxy the PHP scripts to Apache listening on 127.0.0.1:80
- #
- #location ~ \.php$ {
- # proxy_pass http://127.0.0.1;
- #}
-
- # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
- #
- #location ~ \.php$ {
- # root html;
- # fastcgi_pass 127.0.0.1:9000;
- # fastcgi_index index.php;
- # fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;
- # include fastcgi_params;
- #}
-
- # deny access to .htaccess files, if Apache's document root
- # concurs with nginx's one
- #
- #location ~ /\.ht {
- # deny all;
- #}
- }
-
-
- # another virtual host using mix of IP-, name-, and port-based configuration
- #
- #server {
- # listen 8000;
- # listen somename:8080;
- # server_name somename alias another.alias;
-
- # location / {
- # root html;
- # index index.html index.htm;
- # }
- #}
-
-
- # HTTPS server
- #
- #server {
- # listen 443 ssl;
- # server_name localhost;
-
- # ssl_certificate cert.pem;
- # ssl_certificate_key cert.key;
-
- # ssl_session_cache shared:SSL:1m;
- # ssl_session_timeout 5m;
-
- # ssl_ciphers HIGH:!aNULL:!MD5;
- # ssl_prefer_server_ciphers on;
-
- # location / {
- # root html;
- # index index.html index.htm;
- # }
- #}
-
- }
1、目标。
部署Nginx作为透明代理代理上网。相当于请求打到nginx后,nginx直接转发到互联网。
- http {
- resolver 8.8.8.8;
- server {
- listen 7765;
- location / {
- proxy_pass http://$http_host$request_uri;
- }
- }
- }
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文件,内容如下:
- server {
- listen 7765;
- resolver 8.8.8.8;
- location / {
- #proxy_pass http://$http_host$request_uri;
- proxy_pass $scheme://$host$request_uri;
- root html;
- index index.html index.htm;
- }
- }
nginx.conf中在server平齐的位置添加include语句.重启nginx即可。
include /usr/local/nginx/conf/proxy.conf;
1、准备与目标
如前所述,安装了httpd服务器。因为nginx占用的80端口,所以这里配置httpd监听的8080端口;而且我们放置了一些网页资源,通过8080端口可以访问相应资源。
接下来我们配置一个反向代理,通过访问nginx默认监听的80端口就可以访问到httpd的8080端口提供的资源。
在此之前。为了ip不直接暴露在url中我们额外配置一下浏览器所在机器的<ip,域名>映射。
对于mac电脑修改起来很简单。
- vim /etc/hosts
-
-
- #添加如下记录就好
- 118.xxx.xxx.69 www.shuozhuo.com
测试一下确实可以通过域名访问了。
这里想把端口8080去掉,会发现是不行的。接下来我们要做的就是默认访问也能访问到这个资源。
2、具体配置与测试
如下。在nginx.conf下添加如下两句。
- #就是nginx部署机器的ip
- server_name 118.195.193.69;
-
-
- #将nginx 80端口监听的符合”location /“的请求都转发到本机的8080端口
- proxy_pass http://127.0.0.1:8080;
重新加载nginx。
./nginx -s reload
之后按照默认端口访问就是可以的了。如下:
在nginx/logs目录下的access.log也是可以看到每次操作的日志记录的.
3、结论
现在这里实现了隐藏真实服务器的效果,其实就是一个反向代理了。
1、前期准备&目标
安装并配置好tomcat服务器;默认开放8081端口。准备好对应的网页!
- #tomcat页面路径下创建 注:安装目录/webapps
- /tomcat/a.html
-
- //网页内容为
- <h1>Welcome to tomcat!!</h1>
-
- #httpd页面路径下创建 注:默认是绝对路径 /var/www/html
- /httpd/a.html
-
- //网页内容为
- <h1>Welcome to httpd!!</h1>
安装并配置好httpd服务器;默认开放8080端口。准备好对应的网页!
通过请求url路径路由到不同的web服务器。具体来说:路径中含有/tomcat就路由到tomcat、路径中含有/httpd就路由到httpd服务器。
2、配置nginx
nginx.conf中添加如下server(监听9000端口)。
- server {
- listen 9000;
- server_name 118.195.193.69;
-
- location ~ /httpd/{
- proxy_pass http://127.0.0.1:8080;
- }
- location ~ /tomcat/{
- proxy_pass http://127.0.0.1:8081;
- }
- }
-
-
- #解释
- ①这段配置的含义是监听本机(118.195.193.69)的9000端口。
- ②请求uri匹配httpd字段就把请求转发到本机(127.0.0.1)的8080端口;就是httpd服务监听的端口。
- ③请求uri匹配tomocat字段就把请求转发到本机(127.0.0.1)的8081端口;就是tomcat服务监听的端口。
-
- #其他关键字
- (1)server→resolver:resolver的作用是指定DNS机器;例如:
- server{
- resolver 10.xxx.xx.54 10.xxx.xx.15 ipv6=off;
- }
-
-
-
- #关键词解释
- (1)proxy_pass:为代理转发的关键词
- (2)root: 用于指定资源的root路径.如下例子中,实际的访问路径应该是 web服务器默认路径/opt/test/demo
-
- location /demo {
- root /opt/test;
- }
-
- (3)expires: 配置缓存时间
-
- expires 30s; #缓存30秒
- expires 30m; #缓存30分钟
- expires 2h; #缓存2小时
- expires 30d; #缓存30天
-
- 例如:
- location ~ /tomcat/{
- proxy_pass http://127.0.0.1:8081;
- expires 30d;
- }
#配置解释
(1)~ :用于表示uri包含正则表达式,并且区分大小写
(2)~* :用于表示uri包含正则表达式,不区分大小写
(3)= :用于不包含正则表达式的uri前,要求请求字符串与uri严格匹配;如果匹配成功就会立即处理,不在继续往下搜索。
(4)^~ : 用于不包含正则表达式的uri前,要求Nginx找到表示uri和请求字符串匹配度最高的location后,立即使用此location处理请求,而不使用location块中的正则uri和请求字符串做匹配。
匹配优先级: = 、 ^~ 、 ~/~*、不带符号。
3、验证效果
重启nginx
./nginx -s reload
访问效果如下:
负载均衡本质也是反向代理的一种!!!
- #http块中加入如下upstream
-
- upstream shuozhuosvr{
- # ip_hash;
- server 118.195.193.69:8080 weight=1;
- server 118.195.193.69:8081 weight=2;
- }
-
-
-
- #server块中添加如下配置
-
- location / {
- root html;
- proxy_pass http://shuozhuosvr ;
- index index.html index.htm;
- }
-
-
-
-
-
-
-
-
- #upstream基本语法
- (1)一个upstream需要设置一个名称,这个名称可以在server里面当做proxy主机使用。
- (2)一个upstream可以设置多个server,默认Nginx会轮询每个server,从而达到最基本的负载均衡效果。
- (3) weight:每个server可以设置weight字段,实现简易的有权重的负载均衡。
- (4) max_fails: 每个server可以设置max_fails字段;请求server发生错误失败数会累加,如果达到max_fails后,nginx会标记这个server为故障状态从而不去请求该server。
- (5) fail_timeout: 前面说过了max_fails是请求server错误次数,如果达到了max_fails次数之后server会被标记为故障状态,那么多长时间会重新尝试呢?这个fail_timeout就是这个时间了,在达到max_fails次数之后server进入故障状态,而后在fail_timeout时间之后会被重新标记为正常状态。默认情况下,fail_timeout的时间是10秒。
- (6)backup: 这个是备用服务器参数,可以为一个upstream设置一个backup的server,在生产server全部都出问题之后,可以自动切换到备用server上,为回复服务争取时间。
-
-
- upstream default {
- server ip1:9000 max_fails=5;
- server ip2:9000 max_fails=3;
- }
-
-
- upstream default {
- server ip1:9000 max_fails=5 fail_timeout=100;
- server ip2:9000 max_fails=3 fail_timeout=60;
- }
-
- upstream default {
- server ip1:9000 max_fails=5 fail_timeout=100;
- server ip2:9000 max_fails=3 fail_timeout=60;
- server backupip:9000 backup;
- }
-
-
- #其他可用策略
- (1)轮询(默认)
-
- (2)weight 设置权重
-
- (3)ip_hash :每个请求按照访问ip的hash结果进行分配。这样每个固定的访客只会访问固定的后端服务器,可以解决session等问题。
- upstream shuozhuosvr{
- ip_hash;
- server 118.195.193.69:8080;
- server 118.195.193.69:8081;
- }
-
- (4)fair: 按照后端服务器的相应时间来分配请求,相应时间越短越优先分配。
- upstream shuozhuosvr{
- server 118.195.193.69:8080;
- server 118.195.193.69:8081;
- fair
- }
-
结合keepalived就可以实现自动的主备切换效果!!
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。