您的位置:首页 > 运维架构 > Nginx

nginx配置详解二

2018-01-15 17:14 155 查看
1、deny和allow

实际上deny和allow指令属于ngx_http_access_module.我们想控制某个uri或者一个路径不让人访问,在nginx就得靠它了,编译的时候默认是安装了。

下面我们看一下实际操作效果:

一开始我们输入172.18.1.26:9011是可以访问nginx的欢迎页面的,现在我们在配置中加了deny 10.12.0.126(本地pc机器的ip),重新加载nginx后再访问就会出现下面图中这样。



我们限制所有的ip访问站点,除了pc机以外,那么我们需要设置如下:

server {
listen       9011;
server_name  localhost;
location / {
root html;
index index.html;
# 必须是先允许某个ip可以访问,然后才设置deny all 有一个先后顺序。否则都会被限制,从上到下的顺序,类似iptables。匹配到了便跳出。
allow 10.12.0.126;
deny all;
}


我们可以看到curl 172.18.1.26:9011显示fobidden的错误,而自己的pc机访问则是ok的。



2、try_files指令

try_files
语法: try_files file1 [file2 ... filen] fallback
默认值: 无
作用域: location


默认是先找index.html,如果找不到则依次往下找,这里有个特殊的地方就是最后一个找到的时候,可能会出现死循环的错误情况。所以要给个10s的过期时间。详细可以查看官网。



3、proxy_pass指令

下图中我们可以看到当浏览器输入:172.18.1.26:9011的时候请求跳转到es-head插件的请求url。



4、stub_status module模块

背景:之前安装nginx的时候没有使用这个模块,

location /status {
stub_status  on;
}


重新加载的时候报以下错误:



查找资料网上都是在说编译nginx时加上 –with-http_stub_status_module 的配置,可是我已经安装nginx,不想将原来的配置丢掉,所以,需要如下操作

#先找到nginx的解压后的目录位置,重新configure,加上现在我们需要的这个模块。
#下面的指令可以帮我们看到之前编译安装的时候安装了哪些模块
[root@bgsbtsp0010-dqf nginx]# ./sbin/nginx -V
nginx version: nginx/1.12.2
built by gcc 4.4.7 20120313 (Red Hat 4.4.7-4) (GCC)
configure arguments: --prefix=/usr/local/nginx --user=nginx --group=nginx --error-log-path=/usr/local/nginx/error.log --pid-path=/usr/local/nginx/nginx.pid --http-log-path=/usr/local/nginx/access.log --with-debug

#加上我们需要的模块
[root@bgsbtsp0010-dqf nginx-1.12.2]# ./configure --prefix=/usr/local/nginx --user=nginx --group=nginx --error-log-path=/usr/local/nginx/error.log --pid-path=/usr/local/nginx/nginx.pid --http-log-path=/usr/local/nginx/access.log --with-debug --with-http_stub_status_module

# make  make upgrade,不能make install  否则会出现下图这样的情况两个可执行nginx文件。
[root@bgsbtsp0010-dqf nginx-1.12.2]# make && make upgrade




解决之后,我们reload一下,然后在浏览器上输入http://172.18.1.26:9011/status访问。



内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: