这几天在尝试从apache替换成nginx,nginx拥有占用内存小,支持高并发等优点.
linux下nginx的安装
使用系统:centos 6.7,可以通过 cat /etc/redhat-release
来查看系统版本(在centos和redhat下有效).
nginx依赖以下几个软件,如果没有需要先安装一下.可以通过rpm -qa|grep samba 是列出包含samba字段的软件的信息。
来查看是否有安装,如果没有安装,则下载安装包
下载安装包
wget http://www.openssl.org/source/openssl-fips-2.0.9.tar.gz
wget http://nginx.org/download/nginx-1.10.2.tar.gz
wget https://jaist.dl.sourceforge.net/project/libpng/zlib/1.2.11/zlib-1.2.11.tar.gz --
no-check-certificate
wget ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-8.40.tar.gz
然后解压安装,我这里其他的依赖都安装了,直接安装nginx就可以了
安装nginx
[root@localhost]tar zxvf nginx-1.10.2.tar.gz
[root@localhost] cd nginx-1.10.2
[root@localhost] ./configure && make && make install
设置配置文件nginx.conf
在http节点下加下面这段
map $http_upgrade $connection_upgrade { #支持websocket需要
default upgrade;
'' close;
}
server {
listen 80;
server_name xxx.xxx.org; #访问的域名
#charset koi8-r;
#access_log logs/host.access.log main;
location / {
root /opt/xxx/;#静态文件的目录
index index.html index.htm;
}
location /CountCenter/ {#websocket服务器的代理配置
proxy_pass http://x.x.x.x:x/ProjectName/;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection $connection_upgrade;
#访问ws时报403,就加下面两行
proxy_pass_header X-XSRF-TOKEN;
proxy_set_header Origin http://x.x.x.x:x/ProjectName/;
}
}
websocket 403
# Pass the csrf token (see https://de.wikipedia.org/wiki/Cross-Site-Request-Forgery)
# Default in Spring Boot and required. Without it nginx suppresses the value
proxy_pass_header X-XSRF-TOKEN;
# Set origin to the real instance, otherwise a of Spring security check will fail
# Same value as defined in proxy_pass
proxy_set_header Origin "http://testsysten:8080";
启动和其他命令
启动命令:/usr/local/nginx/sbin/nginx
如果出现下面错误
出现错误提示
[root@localhost lib]# error while loading shared libraries: libpcre.so.1: cannot open shared object file: No such file or directory
则按照下面这段来处理
原因 在RedHat 64位机器上nginx读取的pcre文件为/lib64/libpcre.so.1文件,默认安装pcre时libpcre.so文件安装在/usr/local/lib/目录下,所以输入/opt/nginx/sbin/nginx -V 找不到文件路径!!
1.首先确定安装了pcre.
2.切换路径: cd /usr/local/lib 执行 ln -s /usr/local/lib/libpcre.so.1 /lib64/
3.root权限下添加软链接 /usr/local/lib/libpcre.so.1 到 /lib64/ : ln -s /usr/local/lib/libpcre.so.1 /lib64/
检测配置文件是否有语法错误,然后退出 /usr/local/nginx/sbin/nginx -t
重新加载配置|重启|停止|退出 /usr/local/nginx/sbin/nginx -s reload|reopen|stop|quit
关于php的补充
项目中要能访问php的个别文件,apache默认支持,而nginx不行,所以要通过fastcgi来解析访问php,配置如下
location ~ \.php$ {
root /opt/xxx; #这是你网站的根目录
fastcgi_pass 127.0.0.1:3344; #这里指定了fastcgi进程侦听的端口,nginx就是通过这里与php交互的
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root/$fastcgi_script_name;
include fastcgi_params;
}
然后启动php-cgi并绑定3344端口.
nohup php-cgi -b 3344 &
直接执行php-cgi -b 3344
也能运行,但是终端一关就停了,所以加上nohup和&让它能独立运行
note
支持多个静态文件夹
root d:\Users\Desktop\static1;
location /aa {
alias d:\html\static2;
index index.html index.htm;
}