分类标签归档:Nginx

nginx正向代理的配置


接到需求:
需要固定IP访问对方的网站,公司办公网都是宽带上网随机IP。公司只有一个固定IP,需要在这个IP对应的主机上配置正向代理完成访问网站。

http代理

nginx默认只支持http的正向代理,通过模块ngx_http_proxy_module支持

    server {
        resolver 114.114.114.114;
        listen 2345;

        access_log  logs/proxy.access.log main;
        error_log   logs/proxy.error.log;

       

Read more

nginx根据截取URL动态配置跳转不同路径


业务部门需求:
需要根据截取URL动态配置跳转不同路径。
比如:
https://ksp.adsl.cn/m/?local=1&channel=961 会跳到 https://961yetong.17737777777.cn/m/?local=1&channel=961
https://ksp.adsl.cn/m/?local=1&channel=962 会跳到 https://962yetong.17737777777.cn/m/?local=1&channel=962

解决方案:

      server {
          l

Read more

php出现空白页面的解决办法


很多第三方的应用是使用php开发的,当部署完成后发现出现空白的页面。
比如今天迁移老的禅道系统,发现部分页面无法访问。搭建的环境都是一致的,都是tengine+php-fpm+mysql,版本都是一致的。源代码和数据库数据全部正确迁移无误。
百思不得其解????空白的页面又无法得到错误的信息,所有的日志中都不显示错误。
百度了很多办法:
一、通过配置 php.ini 中的参数设置php的报错级别
display_error=On
error_reporting = e_all 并指定error_log
二、php.ini将short_open_tag改成on
三、修改nginx配置
inclu

Read more

Apache-httpd代理的问题


A机器上调用外网地址可以访问
A机器上调用内网地址不可访问 {"shopCode":"0003","shopMsg":"请求IP没有授权"}
B机器上调用A内网地址不可访问 {"shopCode":"0003","shopMsg":"请求IP没有授权"}
B机器上调用A外网地址不可访问 {"shopCode":"0003","shopMsg":"请求IP没有授权"}

经过对方确认请求的地址为我方内网ip地址

推测对方接口应该是提取了X-Forwarded-For的值

方案1:对方接口修改为一般获取客户端的IP地址的方法request.getRemoteAddr();
方案2:为ng

Read more

一个ip对应多个域名多个ssl证书配置-Nginx实现多域名证书HTTPS


背景:
使用阿里云的服务,因业务需求,使用多个域名指向同一个应用,而且全部是https访问。全部使用默认443端口,阿里云的slb就不支持这一个需求了。只能每一个域名申请一个slb,导致申请了过多slb。这样既麻烦又特别浪费资源,于是便需要ssl证书下沉到应用的容器上。

设计:
slb(http协议,端口443)---》nginx(自己端口)
nginx根据来源域名进入不同的server,使用不用ssl证书
nginx配置如下:

http {
   include      mime.types;
   default_type  application/octet-stream;
 

Read more

nginx的ip_hash算法


看nginx的源代码,分析ip_hash在负载分发的应用规则。

源代码中ip的点分十进制表示方法将ip分成四段,但是循环时只是将ip的前三个段作为参数加入hash函数。这样做的目的是保证ip地址前三位相同的用户经过hash计算将分配到相同的后端server。
ip地址前三位相同通常意味着来着同一个局域网或者相邻区域,使用相同的后端服务让nginx在一定程度上更具有一致性。

使用阿里云的负载均衡的情况下,七层代理转发的时候默认勾选“通过X-Forwarded-For头字段获取客户端真实 IP”,导致自建nginx无法获取真正的ip,无法通过ip_hash进行分发。

Read more

lua脚本错误注释导致分发502错误


从昨天开始出现访问分发502的错误:

Sorry, the page you are looking for is currently unavailable.Please try again later.
If you are the system administrator of this resource then you should check the error log for details.

通过清理浏览器的cookie,一些人可以正常使用,但仍有少部分人还是不能使用。
1、查看openresty的error日志文件,发现报错信息:“ failed to load in

Read more

编译nginx平滑添加stream模块


1、下载

wget https://nginx.org/download/nginx-1.16.0.tar.gz

或者下载后rz到服务器上
2、解压

tar -zxvf nginx-1.16.0.tar.gz

3、编译

./configure --prefix=/usr/local/nginx --user=webapp --group=webapp --with-openssl=/usr/local --with-http_ssl_module --with-http_gzip_static_module --http-client-body-temp-path=/usr/local

Read more

Web几点安全防护


apache

1.要防止服务器广播敏感信息,一定要保证将httpd.conf中的”ServerSignature”指令设置为”off”。一次默认的Apache安装会将此指令设置为”off”,不过许多管理员却启用了它。 2.禁用目录浏览:要禁用这个特性,应编辑http.conf文件,而且对每一个”Directory”指令,应清除”Indexes”。

nginx

1、封杀各种user-agent user-agent 也即浏览器标识,每个正常的web请求都包含用户的浏览器信息,除非经过伪装,恶意扫描工具一般都会在user-agent里留下某些特征字眼,比如scan,nmap等。我们可以用正则匹配这

Read more

nginx配置tcp的四层转发


nginx 在1.9.0 之后增加了tcp的四层转发,tcp代理常用于数据库(比如mysql等)、SVN、Git等非http(https)的服务的代理。
首先,编译的时候记得加上--with-stream

./configure --prefix=/thirdparty/nginx1.14.2 --with-stream --with-stream_ssl_module

nginx依赖的包,可以通过yum或者apt-get安装

yum -y install gccpcre-devel openssl openssl-devel pcre pcre-devel zlib zlib-dev

Read more