Nginx简介
Nginx是什么?
Nginx是一款轻量级Web服务器,也是一款反向代理服务器
官网:http://nginx.org/
中文文档: http://www.nginx.cn/doc/
Nginx能干什么?
Nginx能干的事情很多,这里简要罗列一-些:
- 可直接支持Rails和PHP的程序
- 可作为HTTP反向代理服务器
- 作为负载均衡服务器
- 作为邮件代理服务器
- 帮助实现前端动静分离
-
Nginx安装
Nginx下载
官网下载:http://nginx.org/en/download.html
或者直接在linux执行命令:wget http://nginx.org/download/nginx-1.12.2.tar.gz
这里下载的版本是1.12.2 -
安装步骤
# 安装依赖 yum -y install gcc zlib zlib-devel pcre-devel openssl openssl-devel # 解压缩 tar -zxvf linux-nginx-1.12.2.tar.gz cd nginx-1.12.2/ # 执行配置 ./configure # 编译安装(默认安装在/usr/local/nginx) make make install
注:当然 还有一种方法是你事先下载好的安装包,然后将其上传到服务器上,然后用命令解压,之后再去用相应的命令编译安装。
-
防火墙配置
nginx默认监听80端口,如果未关闭防火墙需要配置iptables规则开放80端口(以centos6为例)。
编辑配置文件:vim /etc/sysconfig/iptables
在文件中间添加iptables规则-A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT
重启防火墙:service iptables restart
或者关闭iptables规则:iptables -F && iptables -t nat -F
Nginx验证
nginx主配置文件:
/usr/local/nginx/conf/nginx.conf
nginx日志文件:/usr/local/nginx/logs/access.log
启动Nginx:/usr/local/nginx/sbin/nginx
然后直接访问ip地址,比如:http://192.168.0.110/,如果能看到如下Nginx主页说明安装ok -
-
以上就是nginx的安装过程。
-
当然我们安装nginx是为了反向代理负载均衡,下面来介绍一下nginx配置文件的代理配置:
-
进入配置文件所在位置: cd /usr/local/nginx/conf/ 找到nginx.conf 用vim nginx.conf命令来修改配置文件一般我们会修改如下的两个位置: //配置文件添加如下内容,这里server_name配置的是主机对应的域名,如果没有域名可以通过配置host来映射虚拟域名,或者这里直接配置ip地址,然后用ip访问,proxy_pass是反向代理配置。 单台反向代理的配置: 首先在server内部: server { listen 80; autoindex on; server_name www.silly.com; access_log /usr/local/nginx/logs/access.log combined; index index.html index.htm index.jsp index.php; if ( $query_string ~* ".*[\;'\<\>].*" ){ return 404; } location / { proxy_pass http://127.0.0.1:8080; //配置你所需要代理的地址 add_header Access-Control-Allow-Origin *; } } 多台反向代理的配置: 这时候,我们是要用ngin的upstream 属性,关于此属性 后文会有详细的介绍,我们直接来看配置: 首先我们需要在http标签内部加上如下内容,这里我们代理两个地址,当然前提是你所代理地址对应端口是开放的: upstream names{ server 127.0.0.1:8050 ; server 127.0.0.1:8060 ; } 然后在server的location我们的写法是: server { listen 80; autoindex on; server_name www.silly.com; access_log /usr/local/nginx/logs/access.log combined; index index.html index.htm index.jsp index.php; if ( $query_string ~* ".*[\;'\<\>].*" ){ return 404; } location / { proxy_pass http://names; } } 在配置如上内容之后,去访问你装在nginx的服务器,如果出现你对应的tomcat页面或者是你部署在其上的应用的页面,则证明你是配置成功的;
以上就是nginx的安装和配置。
-
下面我来记录一下本人在配置好负载之后遇到的问题:
-
问题描述:部署在相应服务器之上应用的访问地址是 :例如:https://www.jianshu.com/serverName/aaa/toIndex
-
index.jsp配置的项目启动访问的接口是/aaa/toIndex
-
但用此种方法配置之后代理的地址栏目上的地址是:https://www.jianshu.com/aaa/toIndex
-
忽略掉了项目名称。
-
解决方法:
-
在查找了很多文档之后发现在location当中 / 和/aaa/ 是不一样的具体大家可以去看一下nginx关于location的文档。
-
这里我的解决方式是:在proxy_pass当中去做的处理,处理如下:
-
location / { proxy_pass http://127.0.0.1:8080/serverName/; add_header Access-Control-Allow-Origin *; }
注:放在末尾的/是不能省略的,如果省略默认是不会生效的;
-
具体原因大家可以去看加/和不加的区别;
-
以上就是nginx的安装配置以及本人在使用过程当中遇到的问题;
-