nginx反向代理配置
反向代理通过在nginx/conf/nginx.conf中的proxy_pass配置
什么是反向代理?
反向代理(Reverse Proxy)方式是指以代理服务器外网方式来接受internet上的连接请求,然后将请求转发给内网的服务器(tomcat),并将从服务器上得到的结果返回给internet上请求连接的客户端,此时代理服务器对外就表现为一个反向代理服务器。
启动一个Tomcat 127.0.0.1:8080
需要配置反向代理,则需要配置一下nginx安装目录下的conf文件夹——nginx.conf
原配置文件含义
server {
listen 80; #1默认监听端口号
server_name localhost; #2当访问localhost:80时
#charset koi8-r;
#access_log logs/host.access.log main;
location / { # 3. /表示拦截所有请求
root html;
index index.html index.htm; #4. 转发到index.html
}
#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;
#}
}
nginx默认监听端口号为80,当请求开头为localhost或localhost:80时候,拦截所有请求,并转发到index.html,即nginx的默认页面
我想在本地通过访问www.nginx.cn跳转到我的本地项目localhost:8080/index,则这么配置:
server {
listen 80;
server_name www.nginx.cn;
location / {
proxy_pass http://localhost:8080/index;
index index.html index.htm;
}
}
重启nginx /usr/local/nginx/sbin/nginx –s reload
server{}可以配置多个,这个过程中我们隐藏了我们真实的ip地址,提高了安全性
负载均衡策略
负载均衡策略配置在nginx/conf/nginx.conf中,根据upstream backserver{}配置,注意:配置在server{}外面
1、轮询(默认)
每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器down掉,能自动剔除。如有两台tomcat,tomcat1和tomcat2,那么先访问tomcat1,再访问tomcat2,再访问tomcat1,再访问tomcat2…以此循环。适用场景:两台服务器配置相近情况,否则对于配置低的服务器是性能瓶颈。
upstream mdedit {
server 192.168.1.10;
server 192.168.1.11;
}
server {
listen 80;
server_name www.nginx.cn;
location / {
proxy_pass http://mdedit;
index index.html index.htm;
}
}
重启nginx sbin/nginx -s reload