使用Nigix做反向代理
反向代理
由于准备在服务器上跑多个web服务,想通过子域名而不是端口指向不同的应用,因此参考了文档使用nigix做了反向代理,之前没有接触过nigix,结果发现出乎意料的简单,在这里简单记录一下:
安装nigix $ sudo apt-get install nginx
为ghost创建配置文件 sudo nano /etc/nginx/sites-available/ghost.conf
,稍后说文件内容
创建软连接 $ sudo ln -s /etc/nginx/sites-available/ghost.conf /etc/nginx/sites-enabled/ghost.conf
启动nigix,$ sudo service nginx start
搞定~
说一下nigix的配置文件,格式大概是
server {
listen 80;
server_name test1.example.com;
location / {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Host $http_host;
proxy_pass http://127.0.0.1:2368;
}
}
如果使用ip作为server_name,后面应该带上端口,如127.0.0.1:80,如果想通过不同子域名指向不同的端口,只需要在配置文件中继续加server配置块,如
server {
listen 80;
server_name test2.example.com;
location / {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Host $http_host;
proxy_pass http://127.0.0.1:8081;
}
}
如果不是根目录,location的 “/” 可以换成相应的路径
如果想禁止ip访问,可以
加上
server {
listen 80 default;
return 500;
}
或将访问重定向
server {
listen 80 default;
rewrite ^(.*) http://www.example.com permanent;
}
日志切割
使用apt-get命令安装nginx会自动配置logrotate,可以定期对日志切割,其配置文件在/etc/logrotate.d/下,可以自行修改,也可以使用以下方式自己配置日志切割:
创建切割日志文件的脚本
vi /etc/nginx/nginx_access_log.sh
# !/bin/bash
log_path="/usr/local/nginx/logs/"
mv ${log_path}access.log ${log_path}access_$(date -d "yesterday" +%Y%m%d).log
nginx_pid=`ps aux |grep -E 'nginx: master process'|grep -v 'grep'|awk '{print $2}'`
kill -USR1 $nginx_pid
添加定时命令,执行:
crontab -e
,在文件中添加如下内容
0 17 * * * sh /*/nginx_access_log.sh
同理添加日志压缩脚本:
vi /etc/nginx/nginx_gz_log.sh
# !/bin/bash
log_path="/var/log/nginx/"
tar -czf ${log_path}access_$(date -d "1 month ago" +%Y%m).tar.gz access_$(date -d "1 month ago" +%Y%m)*.log
rm access_$(date -d "1 month ago" +%Y%m)*.log
添加定时命令,执行:
crontab -e
,在文件中添加如下内容
0 1 1 * * sh /etc/nginx/nginx_gz_log.sh