作者:@ouyang
发布时间:2018年10月06日
阅读: 5,098
分类:Linux摘要
Directadmin使用起来非常方便,Nginx的一些规则在自定义Httpd配置就可以直接进行设置。
一般习惯在CUSTOM3进行设置规则,可直接写在server里头。网上的nginx的一些规则适合手动配置Nginx,但DA设置后会直接写http与https在两个配置里,这时候就需要加if进行判断。
if ($server_port = "80") {
rewrite ^/(.*)$ https://$server_name/$1 permanent;
}
我这里直接判断服务器端口为80就强制转向https,如果不加判断会出现链接重置过多而500错误。加一个判断就可轻松解决了。
作者:@ouyang
发布时间:2016年07月19日
阅读: 2,828
分类:学习笔记
网站有时候有多个域名,所以需要做跳转
有时候也需要顶级直接跳转到www上,现就记录nginx跳转实例。
server
{
listen 80;
server_name www.1.com www.22.com.cn www.333.com;
index index.html index.htm index.php;
root /home/www;
if ($host = 'www.22.com.cn' ) {
rewrite ^/(.*)$ http://www.1.com/$1 permanent;
}
if ($host = '333.com' ) {
rewrite ^/(.*)$ http://www.1.com/$1 permanent;
}
if ($host = '22.com.cn' ) {
rewrite ^/(.*)$ http://www.1.com/$1 permanent;
}
break 中止Rewirte,不在继续匹配;
redirect 为302临时重定向的HTTP状态;
permanent 为301永久重定向的HTTP状态。
作者:@ouyang
发布时间:2016年02月20日
阅读: 2,787
分类:学习笔记
[root@server ~]#nginx -V //查看Nginx安装信息以及目录
nginx version: nginx/1.8.0
built by gcc 4.8.5 20150623 (Red Hat 4.8.5-4) (GCC)
built with OpenSSL 1.0.1e-fips 11 Feb 2013
TLS SNI support enabled
configure arguments: --user=nginx --group=nginx --prefix=/usr --sbin-path=/usr/sbin --conf-path=/etc/nginx/nginx.conf --pid-path=/var/run/nginx.pid --http-log-path=/var/log/nginx/access_log --error-log-path=/var/log/nginx/error_log --with-ipv6 --without-mail_imap_module --without-mail_smtp_module --with-http_ssl_module --with-http_realip_module --with-http_stub_status_module --with-http_gzip_static_module --with-http_dav_module --with-cc-opt=''-D FD_SETSIZE=32768''
下载nginx-http-concat模块以及nginx最新版本
[root@server ~]# git clone git://github.com/alibaba/nginx-http-concat.git //下载nginx-http-concat模块
[root@server ~]# mv nginx–http–concat/ /usr/local/src/nginx-http-concat //将模块移动到指定目录
[root@server ~]# wget http://nginx.org/download/nginx-1.9.11.tar.gz //下载最新nginx版本
[root@server ~]# tar zxvf nginx-1.9.11.tar.gz //解压
[root@server ~]# cd nginx-1.9.11 //进入nginx最新目录
这里需要修改一下nginx-http-concat的ngx_http_concat_module.c文件,因为nginx最新的js类别已经修改成application/javascript。所以需要将ngx_http_concat_module.c里的application/x-javascript修改成application/javascript。不然js无法合并,并会提示400错误。
[root@server nginx-1.9.11]# vi /usr/local/src/nginx-http-concat/ngx_http_concat_module.c
找到
ngx_string("application/x-javascript")
将其修改为
ngx_string("application/javascript")
:wq //保存
现在可以进行编译了,将nginx-http-concat一起与nginx编译。
[root@server nginx-1.9.11]# ./configure --user=nginx --group=nginx --prefix=/usr --sbin-path=/usr/sbin --conf-path=/etc/nginx/nginx.conf --pid-path=/var/run/nginx.pid --http-log-path=/var/log/nginx/access_log --error-log-path=/var/log/nginx/error_log --with-ipv6 --without-mail_imap_module --without-mail_smtp_module --with-http_ssl_module --with-http_realip_module --with-http_stub_status_module --with-http_gzip_static_module --with-http_dav_module --with-cc-opt="-D FD_SETSIZE=32768" --add-module=/usr/local/src/nginx-http-concat
make
make以后进入objs
[root@server nginx-1.9.11]# cd ./objs
[root@server objs]# mv /usr/sbin/nginx /usr/sbin/nginx.old //移动1.8版本nginx为nginx.old
[root@server objs]# cp nginx /usr/sbin/nginx //将刚编译的1.9.11的nginx复制原地址。
这个时候基本就升级完成了。
[root@server objs]# nginx -V
nginx version: nginx/1.9.11
built by gcc 4.8.5 20150623 (Red Hat 4.8.5-4) (GCC)
built with OpenSSL 1.0.1e-fips 11 Feb 2013
TLS SNI support enabled
configure arguments: --prefix=/usr --user=nginx --group=nginx --sbin-path=/usr/sbin --conf-path=/etc/nginx/nginx.conf --pid-path=/var/run/nginx.pid --http-log-path=/var/log/nginx/access_log --error-log-path=/var/log/nginx/error_log --with-ipv6 --without-mail_imap_module --without-mail_smtp_module --with-http_ssl_module --with-http_realip_module --with-http_stub_status_module --with-http_gzip_static_module --with-http_dav_module --with-cc-opt='-D FD_SETSIZE=32768' --add-module=/usr/local/src/nginx-http-concat
这时候看到nginx版本升级到指定版本,并且看到nginx-http-concat已经成功编译进去。
但还没有完成,我们还需要在nginx.conf里面进行配置。
举例:
server
{
listen 120.0.0.1:80;
server_name ouyang.wang www.ouyang.wang ;
access_log /var/log/nginx/domains/ouyang.wang.log;
access_log /var/log/nginx/domains/ouyang.wang.bytes bytes;
error_log /var/log/nginx/domains/ouyang.wang.error.log;
root /home/domains/ouyang.wang/public_html;
index index.htm index.html index.php;
include /usr/local/directadmin/data/users/news/nginx_php.conf;
location / {
concat on;
concat_max_files 20;
concat_unique off; //允许不同类型文件合并
}
include /etc/nginx/webapps.conf;
}
只需要将下列加入server里即可。
location / {
concat on;
concat_max_files 20;
concat_unique off;
}
参数说明:
# nginx_concat_module 开关
concat on;
# 最大合并文件数
# concat_max_files 10;
# 允许不同类型文件合并
# concat_unique off;
# 允许合并的文件类型,多个以逗号分隔。如:application/javascript, text/css
# concat_types application/javascript, text/css;
配置保存完成后,启动nginx即可。
systemctl reload nginx.service
作者:@ouyang
发布时间:2015年07月21日
阅读: 4,086
分类:技术相关
本文转载自: 搭建nginx反向代理用做内网域名转发 http://blog.csdn.net/tham_/article/details/45973787
在实际办公网中,因为出口IP只有一个,要实现对外提供服务的话就必须得做端口映射,如果有多个服务要对外开放的话,这只能通过映射不同端口来区分,这在实际使用过程中非常的痛苦(记忆困难、一一对应关系也没有规律、访问的时候还得加端口),这个痛苦的问题用表格的形式来形象的描述如下:
Public IP |
Public Port Number |
Internal IP |
Internal Port Number |
Note |
1.1.1.1 |
80 |
192.168.1.10 |
80 |
service A |
1.1.1.1 |
81 |
192.168.1.11 |
80 |
service B |
1.1.1.1 |
8080 |
192.168.1.25 |
80 |
service C |
1.1.1.1 |
443 |
192.168.1.26 |
443 |
service D |
1.1.1.1 |
444 |
192.168.1.35 |
443 |
service E |
在需要对外开放的服务很多的情况下,NAT的方式虽然难用、难记,但至少还是能够满足需求的(可用端口要小于65535个),但如果A、B、C服务都想(或者必须)使用默认的80、443端口的话,在只有一个公网IP的情况下是没法满足的,如果能有一种如下的实现方式,那就完美了:
Domain Name |
Public IP |
Public Port Number |
Internal IP |
Internal Port Number |
Note |
A.example.com |
1.1.1.1 |
80 |
192.168.1.10 |
80 |
service A |
B.example.com |
1.1.1.1 |
80 |
192.168.1.11 |
80 |
service B |
C.example.com |
1.1.1.1 |
80 |
192.168.1.25 |
80 |
service C |
D.example.com |
1.1.1.1 |
443 |
192.168.1.26 |
443 |
service D |
E.example.com |
1.1.1.1 |
443 |
192.168.1.35 |
443 |
service E |
首先来分析一下,传统NAT的话肯定是实现不了,因为NAT是3层ip加4层端口的方式做映射,而域名(如http header中)都属于7层的内容,要实现的话只能借助支持7层http协议解析的工具实现,经过一番研究发现反向代理可以实现,那太好了,反响代理的工具一大堆:squid、apache、nginx、haproxy、mysql proxy等等,本文仅讲基于http、https协议的实现,其他协议暂不讨论。
有了工具的支持,接下来就得考虑考虑如何部署的问题:
(1)域名解析到路由器的公网ip-->在路由器(pfsense)上安装squid-->配置反向代理(开启http、https反向代理、主机映射、域名正则匹配转发)-->成功实现(需要路由器支持);
(2)域名解析到路由器的公网ip-->在路由器上做传统NAT,将80、443端口分别指向反向代理服务器-->配置反向代理服务器的-->成功实现(通用方法);
WINDOWS 2008Server 配置nginx 反向代理服务器
本案例有用过可行
0、先要在域名官网上面配置域名对应的IP地址,然后要在自己路由器上面将80端口映射到要装nginx服务器的IP地址。
1、从官网上面下载nginx1.6.2 WINDOWS版本的。访问地址http://nginx.org/en/download.html
2、解压缩到C盘根目录下面
3、复制C:\nginx\conf\nginx.conf,保存成一个副本
4、编辑nginx.conf,内容如下
阅读剩余部分...