当前位置:首页 > 技术文章 > 正文内容

实战录 | 今天聊聊Nginx反向代理使用

arlanguage5个月前 (12-18)技术文章29

《实战录》导语

本期分享人为云端卫士SOC工程师田全磊,将带来Nginx反向代理使用。本文涉及到nignx的安装、nginx的配置说明、nginx的负载均衡、nginx的反向代理和nginx的ssl方反向代理以及nginx location路径匹配优先级等问题。

最近工作中经常使用nginx,为了能够更好的使用nginx,我搜罗了很多nginx相关的技术文章来读,所以才有了下面以下内容。在此,为文中引用到和参考到的文章提供者表示感谢。如文中相关内容有错误,也欢迎大家留言提出。

Nginx的安装与启动

1)pcre安装,支持正则表达式

http://www.pcre.org/

# tar zxvf pcre-7.9.tar.gz

# cd pcre-7.9

#./configure

# make && make install

2)openssl安装(可选),支持安全协议的站点

http://www.openssl.org/

# tar zxvf openssl-0.9.8l.tar.gz

# cd openssl-0.9.8l

#./config

# make && make install

3)nginx的安装

# tar zxvf nginx-0.7.64.tar.gz

# cd nginx-0.7.64

4)启动

# cd usr/local/nginx/sbin

# /nginx

5)重启

./nginx -s reload

Nginx.conf 基本配置

#user nobody;

worker_processes 1; #nginx进程数,建议设置为等于CPU总核心数。

events {

worker_connections 1024; #单个进程最大连接数(最大连接数=连接数*进程数)

}

http {

include mime.types;#文件扩展名与文件类型映射表

default_type application/octet-stream;#默认文件类型

sendfile on;#sendfile on; #开启高效文件传输模式

keepalive_timeout 60;#长连接超时时间,单位是秒

#gzip模块设置(略)

upstream blog.ha97.com {

#upstream的负载均衡,weight是权重,可以根据机器配置定义权重

#weigth参数表示权值,权值越高被分配到的几率越大。

server 192.168.80.121:80 weight=3;

server 192.168.80.122:80 weight=2;

server 192.168.80.123:80 weight=3;

}

server {

listen 80;

server_name localhost;

location / {

proxy_pass http://192.168.24.152:8080/test1;

proxy_set_header X-Real-IP $remote_addr;

proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

}

location /test {

proxy_pass http://192.168.24.152:8080/abc;

proxy_set_header X-Real-IP $remote_addr;

proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

}

}

server{

listen 8082;#监听端口

server_name localhost;

location / {

proxy_pass http://192.168.24.152:8080/test1;

proxy_set_header X-Real-IP $remote_addr;

proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

}

}

}

Nginx.conf server配置说明

1) server配置说明

server {

listen 80; #监听端口

server_name localhost; #域名可以有多个,用空格隔开

location / {

proxy_pass http://192.168.24.152:8080/test1;

proxy_set_header X-Real-IP $remote_addr;

#把真实的IP发送给 转发的web服务器,否则转发的IP是nginx这台的IP

proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

#意思是增加一个$proxy_add_x_forwarded_for到X-Forwarded-For里去

#例X-Forwarded-For: 1.1.1.1, 2.2.2.2, 3.3.3.3 代表 请求由1.1.1.1发出,

#经过三层代理,#第一层是2.2.2.2,第二层是3.3.3.3,而本次请求的来源

#IP4.4.4.4是第三层代理

}

}

2)多个server配置,监听不同端口

server { #server1

listen 80;

server_name localhost;

location / {

proxy_pass http://192.168.24.152:8080/test1;

proxy_set_header X-Real-IP $remote_addr;

proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

}

}

server{ #server2

listen 8082;#监听端口

server_name localhost;

location / {

proxy_pass http://192.168.24.152:8080/test1;

proxy_set_header X-Real-IP $remote_addr;

proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

}

}

server配置路径匹配问题

Nginx location中可能涉及的匹配规则有:

  • = 精确匹配

  • ^~ 普通字符匹配,区分大小写

  • ~ 正则匹配,区分大小写

  • /xxx/yyy.zzz 最长匹配

  • /

其优先级顺序如下:

  • =优先级大于^~

  • ^~优先级大于~

  • ~ 对比 /xxx/yyy.zzz

  • ^~优先级大于/xxx/yyy.zzz

  • ~优先级大于/

  • /xxx/yyy.zzz优先级大于/

  • /xxx/yyy/ 优先级大于 /xxx/

综上所述location规则优先级顺序为 = > ^~ > ~ > /xxx/yyy.zzz > / ,路径匹配的优先级与location在文档中的位置先后无关。

Nginx实现ssl反向代理

server {

listen 443; #监听443端口

server_name localhost;

ssl on; #启用ssl加密

ssl_certificate /ect/cert/free4lab.crt; #服务器证书crt文件

ssl_certificate_key /ect/cert/free4lab.key; #服务器私钥key文件

location / {

proxy_pass http://192.168.24.152:8080/test1;

proxy_set_header X-Real-IP $remote_addr;

proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

}

}

扫描二维码推送至手机访问。

版权声明:本文由AR编程网发布,如需转载请注明出处。

本文链接:http://www.arlanguage.com/post/280.html

分享给朋友:

“实战录 | 今天聊聊Nginx反向代理使用” 的相关文章

Nginx常用技巧

Nginx常用技巧:提高性能、安全性与稳定性Nginx作为高性能的Web服务器和反向代理服务器,广泛应用于各类生产环境中。通过一些常用的配置技巧,可以有效提高Nginx服务器的性能、安全性和可靠性。以下将介绍几项关键的配置技巧,帮助您最大化利用Nginx的优势。直达服务器选购网址:www.tsyvp...

nginx限制php程序“跨站”访问 nginx限制只能域名访问

我秀站外合作有一个需求:需在一台web服务器上增加一个虚拟主机用来做图片资源站,所用程序为第三方,担心有后门程序,因此希望最好隔断与原机器其他服务的关系。思考了一下,确实有一些风险存在。目前我们服务器上都统一使用nobody用户启动nginx和php,包括web目录,这些机器上部分有多个域名在一起运...

Windows中使用Nginx解决前后端分离部署中的跨域问题

说明现在的Java Web项目好多都使用前后端分离的开发部署方式,这样的好处有很多,比如:可以实现真正的前后端解耦,可以减少后端服务器的并发/负载压力,方便实现多端应用(网页端、移动端共用一个后台服务)、增加代码的维护性&易读性。一般我们会采用Nginx来部署前端代码,使用Tomcat来部署后台服务...

技巧:PHP版本怎样隐藏在Linux服务器

通常情况下,大多数安装web服务器软件的默认设置存在信息泄露,这些软件其中之一就是PHP。PHP是如今最流行的服务端html嵌入式语言之一。而在如今这个充满挑战的时代,有许多黑客会尝试发现你服务端的漏洞。因此,ehowstuff网站一篇简单描述如何在Linux服务器中隐藏PHP信息值得关注。(图片来...

nginx检查提示“unknown directive "stream" in /etc/*/nginx.conf”

yum安装nginx检查时提示“unknown directive "stream" in /etc/nginx/nginx.conf”yum安装nginx,在配置反代时,出现错误:nginx -tnginx: [emerg] unknown directive "strea...

Nginx的安装及配置详解 nginx1.12安装

Nginx是一个强大的免费开源的HTTP服务器和反向代理服务器。在Web开发项目中,nginx常用作为静态文件服务器处理静态文件,并负责将动态请求转发至应用服务器(Django, Flask, etc)。熟悉Nginx的配置对Web开发和运维人员来说至关重要。本文整理了Nginx的配置大全,可以作为...