Nginx的非80端口做反向代理后变成80端口的问题
Nginx可以很方便的配置成反向代理服务器
比如:
server { listen 180; server_name localhost; location / { index index.jsp index.html index.htm; proxy_pass http://www.xxx.com; proxy_set_header X-Real-IP $remote_addr; } }
呵呵~监听端口是180,没错,这个时候会后端的web服务器(比如Tomcat的request.getServerPort()还是拿到80端口),这个时候就有可能出现找不到图片之类的问题:
http://www.xxx.com:80/ns/http/public/images/logo.jpg
正确的做法是:
在header加上Host的声明:
server {
listen 80;
server_name localhost;
location / {
index index.jsp index.html index.htm;
proxy_pass http://www.xxx.com;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Host $host:180;
}
}
加上红色部分以后,后端的web服务器才会拿到正确的端口号。
Oracle 启动时ORA-00600的解决办法
oracle startup时 报错ORA-00600: 内部错误代码,参数: [kcratr1_lostwrt], [], [], [], [], [], [], []
原因可能是非法关机或掉电造成,以下是出现的问题及解决方法:
SQL> startup
ORA-00600: 内部错误代码,参数: [kcratr1_lostwrt], [], [], [], [], [], [], []
SQL> shutdown immediate
ORA-01109: 数据库未打开
已经卸载数据库。
ORACLE 例程已经关闭。
SQL> startup mount
ORACLE 例程已经启动。
Total System Global Area 135338868 bytes
Fixed Size 453492 bytes
Variable Size 109051904 bytes
Database Buffers 25165824 bytes
Redo Buffers 667648 bytes
数据库装载完毕。
SQL> recover database;
完成介质恢复。
SQL> alter database open;
数据库已更改。
SQL>exit;
看完乔教主的典礼演讲最有感的部分
你的时间很短暂,别将这浪费在重复其他人的生活上。
别被教条束缚,要不然你就会和别人思考的结果一起生活。(me:追求别人追求的,那人生还有什么意义?)
别被他人喧嚣的观点掩盖了自己内心真正的声音。
然而最重要的是,要有跟从你内心指示的勇气,它们在某种程度上知道你真正想成为什么样子,其他一切都不那么重要。
Redhat更换163的CentOS的yum源
我们公司一直以来信赖Redhat+Oracle,但是木有专门管理Linux的技术人员(不是没人会,而是木有这样空闲的人)。而没有购买Redhat的服务,所以也无法yum所带来的系统更新服务,对我来说无法方便地安装软件包是最大的问题(有能力的话就让自己懒一点)!!!
由于CentOS是从Redhat演化而来的免费Linux版本,因此可以利用CentOS的yum更新源来实现Redhat的yum功能,这里我们选择了163的CentOS的yum源(感谢163的镜像)。
OK我们开始更换源吧!
1. 检查yum是否安装,默认情况下都是安装好的,总共4各包
[root@server ~]# rpm -qa | grep yum
yum-metadata-parser-1.1.2-2.el5
yum-security-1.1.10-9.el5
yum-rhn-plugin-0.5.3-6.el5
yum-3.2.8-9.el5
yum-updatesd-0.9-2.el5
2. 删除旧的yum包
[root@server ~]# rpm -e –nodeps yum-rhn-plugin-0.5.3-6.el5 yum-3.2.8-9.el5 yum-security-1.1.10-9.el5 yum-updatesd-0.9-2.el5 yum-metadata-parser-1.1.2-2.el5
备注:各个软件包的具体版本号根据第一步的执行结果而定。一行过的命令可防止包的以来冲突而导致删除失败。
3. 到163的镜像下载新的yum
wget http://mirrors.163.com/centos/5/updates/i386/RPMS/yum-fastestmirror-1.1.16-14.el5.centos.1.noarch.rpm wget http://mirrors.163.com/centos/5/updates/i386/RPMS/yum-metadata-parser-1.1.2-3.el5.centos.i386.rpm wget http://mirrors.163.com/centos/5/updates/i386/RPMS/yum-3.2.22-33.el5.centos.noarch.rpm
备注:163镜像虽然有5.1~5.6的源,但是5.1~5.5都已经归纳到5这个目录下面了,所以各位还是那句话根据实际定。
4. 安装下载的3个包
rpm -Uvh *.rpm
5. 更新yum的配置文件
1) 备份 /etc/yum.repos.d/ 目录下面的文件,并删除原有的repo配置文件(如:rhel-*.repo)
2) 按照163的CentOS镜像使用帮助页面下载CentOS-Base.repo文件到/etc/yum.repos.d/
6. 测试yum
如果更换成功输入下面yum update命令就很看到更新进度了说明你更新成功了。
凡事无绝对,如果你看到的事如下,那说明你还没有更换成功:
更换失败建议参考一下这些链接:
http://www.linuxidc.com/Linux/2008-01/10562.htm
http://www.huomo.cn/os/article-19b45.html
或则搜索:“redhat centos yum 163”
CentOS 安装git
现在需要把一些临时代码但又不大适合提交到公司的SVN服务器的东东用版本控制器管理起来了,最近在试用的Git(Git是啥?猛击这里)现在可以派上用场了,安装的时候遇到个搞笑的问题,以前用惯了ubuntu的apt-get命令,习惯了:
sudo apt-get install git-core
到了Redhat或CentOS下面的yum就中招了:木有该软件包。
google了一下,安装方法步骤比ubuntu的apt-get多了,不过也是很简单:
1. 首先安装依赖包(不过以我管理服务器系统的习惯,这些包早都已经是最新的了)
yum install zlib-devel
yum install openssl-devel
yum install perl
yum install cpio
yum install expat-devel
yum install gettext-devel
2.安装autoconf (autoconf是啥东西?猛击这里)
yum install autoconf
3.安装git
wget http://www.codemonkey.org.uk/projects/git-snapshots/git/git-latest.tar.gz
tar xzvf git-latest.tar.gz
cd git-{date} #这个目录视情况而定
autoconf
./configure –with-curl=/usr/local
make & make install
完成
与Git相关的信息:
- 什么是Git
- Git中文教程
- Git官方网站
- Git和Svn之间的五个基本区别(by 外刊IT评论网)
Nginx – 隐藏服务器的版本号
服务器爆一些漏洞是经常发生的事情,黑客就会用工具扫描你的服务器软件版本,发现如果是存在漏洞的版本的话就会把你定为攻击对象,所以隐藏服务器的版本号也是一种服务器安全措施。下面我就教大家如何隐藏服务器的本版号:
Nginx的配置文件修改如:
#vi $NGINX_HOME/conf/nginx.conf //我喜欢把某些常用的路径配置到环境变量里面
http {
…… //省略配置
sendfile on;
tcp_nopush on;
keepalive_timeout 65;
tcp_nodelay on;
server_tokens off;
……. //省略配置
}
修改后重启nginx:
#nginx -t // 把Nginx配置的环境变量里面就是有这样的好处,随时随地的执行nginx,不用跑到sbin里面去
#nginx -s reload
修改前后情况对比:
[root@localhost ~]# curl –head 127.0.0.1
HTTP/1.1 403 Forbidden
Server: nginx/0.8.46
Date: Fri, 11 Mar 2011 08:26:51 GMT
Content-Type: text/html; charset=utf-8
Content-Length: 169
Connection: keep-alive
[root@localhost ~]# curl –head 127.0.0.1
HTTP/1.1 403 Forbidden
Server: nginx
Date: Fri, 11 Mar 2011 08:26:58 GMT
Content-Type: text/html; charset=utf-8
Content-Length: 162
Connection: keep-alive
最后看看404页面
搞定!
Linux 如何把进程放到后台继续运行
在维护过程中可能会上传或者下载很大的文件或者做一些等待时间非常长操作,直接把SSH窗口关闭会导致指令终止,这时候我们可以使用下面一系列命令把真正执行的指令交给系统,而我们退出登录也不会导致指令终止。
例如:
1. 比如我们压缩一个很大的文件
[root@vpn tmp]# gzip hyjwt_ROOT_bak_20100910.tar
2. 这时候画面会停止,直到压缩完成。按组合键“Ctrl + Z”暂停指令并退出运行状态,显示结果如下:
[root@vpn tmp]# gzip hyjwt_ROOT_bak_20100910.tar
3. 使用bg命令通过将暂停的指令作为后台作业运行
[root@vpn tmp]# bg
[1]+ gzip hyjwt_ROOT_bak_20100910.tar &
说明:控制台打印的“[1]”代表作业的编号
4. jobs 命令显示了当前 shell 环境中已启动的作业状态。
[root@vpn tmp]# jobs
[1] + Running gzip hyjwt_ROOT_bak_20100910.tar
说明:控制台打印出作业编号为1的作业已经处于运行状态,压缩指令又再次继续工作了。
5. disown 命令将进程与shell分离
[root@vpn tmp]# disown -h %1
通过disown命令就可以把后台作业(“%1”代表作业号)的进程从我们的会话中分离出来而交给系统,这样我们即使退出登录压缩指令也在继续执行,直到完成压缩。
我们通过查看进程
[root@vpn ~]# ps -ef|grep gzip
oracle 2409 1 0 Jun22 ? 00:00:00 gzip hyjwt_ROOT_bak_20100910.tar
可以看出压缩指令的父进程号已经变成1。
Linux 常用命令
查看当前目录以及子目录的大小du -sh查看各个挂载的分区大小df -h
find . -name “*.jpg” |xargs rmxargs 表示每查找出一个文件就执行后续的命令(这种方式好像不是批量处理,而是一个一个的删除)
netstat -na | grep ESTAB | grep 80 | wc -l
date -d “$(awk -F. ‘{print $1}’ /proc/uptime) second ago” +”%Y-%m-%d %H:%M:%S”0
ps -A -opid,stime,etime,args|grep java
#进入crontab编辑模式crontab -e30 * * * * /usr/sbin/ntpdate 210.72.145.44 > /dev/null 2>&1vi /etc/sysconfig/ntpd增加一行: SYNC_HWCLOCK=yes
echo “123456″|passwd –stdin “root”
find A -name “*.[ch]“|cpio -pdm B
Linux curl命令上传文件
curl -F ”action=upload” -F “filename=@/root/install.log” http://192.168.1.223:8084/fileupload/upload
Fedora 15 安装MP3插件
rpm -ivh http://download1.rpmfusion.org/free/fedora/rpmfusion-free-release-stable.noarch.rpm
rpm -ivh http://download1.rpmfusion.org/nonfree/fedora/rpmfusion-nonfree-release-stable.noarch.rpm
yum -y install gstreamer-plugins-bad gstreamer-plugins-ugly xine-lib-extras-nonfree gstreamer-ffmpeg

