CentOS7开发环境搭建(二)——反向代理服务器nginx
7、安装nginx
#1、添加CentOS 7 yum资源库
[root@localhost bin]# sudo rpm -Uvh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm
#2、使用 yum 命令安装nginx
[root@localhost bin]# sudo yum install -y nginx
#3、启动/关闭nginx
启动nginx
[root@localhost bin]# service nginx start
或者
[root@localhost nginx]# systemctl start nginx.service
关闭nginx
[root@localhost bin]# service nginx stop
或者
[root@localhost nginx]# systemctl stop nginx.service
如果启动nginx出现错误如下,请检查防火墙
[root@localhost nginx]# service nginx start Redirecting to /bin/systemctl start nginx.service Job for nginx.service failed. See 'systemctl status nginx.service' and 'journalctl -xn' for details.
#4、使用域名或IP访问nginx默认页面
http://192.168.1.110
默认界面如下:
或者 使用命令行
[root@localhost ~]# curl http://192.168.1.110
#5.配置nginx.conf
[root@localhost rogue]# cd /etc/nginx [root@localhost nginx]# ls conf.d koi-utf mime.types scgi_params win-utf fastcgi_params koi-win nginx.conf uwsgi_params [root@localhost nginx]# vi nginx.conf
配置如下:
#运行用户 user root; #启动进程,通常设置成和cpu的数量相等 worker_processes 1; #全局错误日志及PID文件 error_log /var/log/nginx/error.log warn; pid /var/run/nginx.pid; #工作模式及连接数上限 events { #epoll是多路复用IO(I/O Multiplexing)中的一种方式,但是仅用于linux2.6以上内核,可以大大提高nginx的性能 use epoll; #单个后台worker process进程的最大并发链接数 worker_connections 1024; } #设定http服务器,利用它的反向代理功能提供负载均衡支持 http { #设定mime类型,类型由mime.type文件定义 include /etc/nginx/mime.types; default_type application/octet-stream; #设定日志格式 log_format main '$remote_addr - $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" "$http_x_forwarded_for"'; #全局访问日志 access_log /var/log/nginx/access.log main; #sendfile 指令指定 nginx 是否调用 sendfile 函数(zero copy 方式)来输出文件,对于普通应用,必须设为 on,如果用来进行下载等应用磁盘IO重负载应用,可设置为 off,以平衡磁盘与网络I/O处理速度,降低系统的uptime. sendfile on; #tcp_nopush on; #连接超时时间 keepalive_timeout 65; #设定负载均衡的服务器列表,weigth参数表示权值,权值越高被分配到的几率越大 upstream tomcat{ server 192.168.1.110:8080 weight=1; server 192.168.1.110:8088 weight=1; } #服务器配置 server{ listen 80; #侦听80端口 server_name 192.168.1.110; #请求路径配置 location /{ proxy_pass http://tomcat; #将请求转向tomcat定义的服务器列表 } location /status{ stub_status on; #显示nginx的状态 #反向代理配置 proxy_redirect off; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_next_upstream error timeout invalid_header http_500 http_503 http_404; proxy_connect_timeout 300; #nginx跟后端服务器连接超时时间(代理连接超时) proxy_read_timeout 300; #连接成功后,后端服务器响应时间(代理接收超时) proxy_send_timeout 300; #后端服务器数据回传时间(代理发送超时) proxy_buffer_size 64k; #设置代理服务器(nginx)保存用户头信息的缓冲区大小 proxy_buffers 4 64k; #proxy_buffers缓冲区,网页平均在64以下的话,这样设置 proxy_busy_buffers_size 64k; #高负荷下缓冲大小(proxy_buffers*2) proxy_temp_file_write_size 64k; #设定缓存文件夹大小,大于这个值,将暂时写入proxy_temp文件夹下 } location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$ { #设定访问静态文件直接读取不经过tomcat root /usr/share/nginx/imgs; expires 30d; } location ~ ^/(WEB-INF)/ { #这个很重要,不然用户就可以访问了 deny all; } large_client_header_buffers 4 64k; client_max_body_size 30m; #允许客户端请求的最大单文件字节数 client_body_buffer_size 128k;#缓冲区代理缓冲用户端请求的最大字节数, } #gzip on; # 开启gzip压缩 include /etc/nginx/conf.d/*.conf; }
nginx配置文件详解
#运行用户 user www-data; #启动进程,通常设置成和cpu的数量相等 worker_processes 1; #全局错误日志及PID文件 error_log /var/log/nginx/error.log; pid /var/run/nginx.pid; #工作模式及连接数上限 events { use epoll; #epoll是多路复用IO(I/O Multiplexing)中的一种方式,但是仅用于linux2.6以上内核,可以大大提高nginx的性能 worker_connections 1024;#单个后台worker process进程的最大并发链接数 # multi_accept on; } #设定http服务器,利用它的反向代理功能提供负载均衡支持 http { #设定mime类型,类型由mime.type文件定义 include /etc/nginx/mime.types; default_type application/octet-stream; #设定日志格式 access_log /var/log/nginx/access.log; #sendfile 指令指定 nginx 是否调用 sendfile 函数(zero copy 方式)来输出文件,对于普通应用, #必须设为 on,如果用来进行下载等应用磁盘IO重负载应用,可设置为 off,以平衡磁盘与网络I/O处理速度,降低系统的uptime. sendfile on; #tcp_nopush on; #连接超时时间 #keepalive_timeout 0; keepalive_timeout 65; tcp_nodelay on; #开启gzip压缩 gzip on; gzip_disable "MSIE [1-6]\.(?!.*SV1)"; #设定请求缓冲 client_header_buffer_size 1k; large_client_header_buffers 4 4k; include /etc/nginx/conf.d/*.conf; include /etc/nginx/sites-enabled/*; #设定负载均衡的服务器列表 upstream mysvr { #weigth参数表示权值,权值越高被分配到的几率越大 #本机上的Squid开启3128端口 server 192.168.8.1:3128 weight=5; server 192.168.8.2:80 weight=1; server 192.168.8.3:80 weight=6; } server { #侦听80端口 listen 80; #定义使用www.xx.com访问 server_name www.xx.com; #设定本虚拟主机的访问日志 access_log logs/www.xx.com.access.log main; #默认请求 location / { root /root; #定义服务器的默认网站根目录位置 index index.php index.html index.htm; #定义首页索引文件的名称 fastcgi_pass www.xx.com; fastcgi_param SCRIPT_FILENAME $document_root/$fastcgi_script_name; include /etc/nginx/fastcgi_params; } # 定义错误提示页面 error_page 500 502 503 504 /50x.html; location = /50x.html { root /root; } #静态文件,nginx自己处理 location ~ ^/(images|javascript|js|css|flash|media|static)/ { root /var/www/virtual/htdocs; #过期30天,静态文件不怎么更新,过期可以设大一点,如果频繁更新,则可以设置得小一点。 expires 30d; } #PHP 脚本请求全部转发到 FastCGI处理. 使用FastCGI默认配置. location ~ \.php$ { root /root; fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME /home/www/www$fastcgi_script_name; include fastcgi_params; } #设定查看Nginx状态的地址 location /NginxStatus { stub_status on; access_log on; auth_basic "NginxStatus"; auth_basic_user_file conf/htpasswd; } #禁止访问 .htxxx 文件 location ~ /\.ht { deny all; } } }
以上是一些基本的配置,使用nginx最大的好处就是负载均衡
如果要使用负载均衡的话,可以修改配置http节点如下:
http { #设定mime类型,类型由mime.type文件定义 include /etc/nginx/mime.types; default_type application/octet-stream; #设定日志格式 access_log /var/log/nginx/access.log; #省略上文有的一些配置节点 #。。。。。。。。。。 #设定负载均衡的服务器列表 upstream mysvr { #weigth参数表示权值,权值越高被分配到的几率越大 server 192.168.8.1x:3128 weight=5;#本机上的Squid开启3128端口 server 192.168.8.2x:80 weight=1; server 192.168.8.3x:80 weight=6; } upstream mysvr2 { #weigth参数表示权值,权值越高被分配到的几率越大 server 192.168.8.x:80 weight=1; server 192.168.8.x:80 weight=6; } #第一个虚拟服务器 server { #侦听192.168.8.x的80端口 listen 80; server_name 192.168.8.x; #对aspx后缀的进行负载均衡请求 location ~ .*\.aspx$ { root /root; #定义服务器的默认网站根目录位置 index index.php index.html index.htm; #定义首页索引文件的名称 proxy_pass http://mysvr ;#请求转向mysvr 定义的服务器列表 #以下是一些反向代理的配置可删除. proxy_redirect off; #后端的Web服务器可以通过X-Forwarded-For获取用户真实IP proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; client_max_body_size 10m; #允许客户端请求的最大单文件字节数 client_body_buffer_size 128k; #缓冲区代理缓冲用户端请求的最大字节数, proxy_connect_timeout 90; #nginx跟后端服务器连接超时时间(代理连接超时) proxy_send_timeout 90; #后端服务器数据回传时间(代理发送超时) proxy_read_timeout 90; #连接成功后,后端服务器响应时间(代理接收超时) proxy_buffer_size 4k; #设置代理服务器(nginx)保存用户头信息的缓冲区大小 proxy_buffers 4 32k; #proxy_buffers缓冲区,网页平均在32k以下的话,这样设置 proxy_busy_buffers_size 64k; #高负荷下缓冲大小(proxy_buffers*2) proxy_temp_file_write_size 64k; #设定缓存文件夹大小,大于这个值,将从upstream服务器传 } } }
#6、tomcat配置
对于配置两个tomcat,只需要修改server.xml配置文件即可。
第一个端口修改:
<!-- 修改port端口:18006 俩个tomcat不能重复,端口随意,别太小--> <Server port="18006" shutdown="SHUTDOWN">
第二个端口修改:
<!-- port="8088" tomcat监听端口,随意设置,别太小 --> <Connector port="8088" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" />
第三个端口修改:
<Connector port="18009" protocol="AJP/1.3" redirectPort="8443" />
Engine元素增加jvmRoute属性:
<Engine name="Catalina" defaultHost="localhost" jvmRoute="tomcat1">
#7、测试
验证配置文件
[root@localhost nginx]# nginx -t nginx: the configuration file /etc/nginx/nginx.conf syntax is ok nginx: configuration file /etc/nginx/nginx.conf test is successful
测试负载均衡
访问 http://192.168.1.110 , 不断刷新,随机出现以下两种效果图
和
测试nginx状态
访问 http://192.168.1.110/status , 有如下效果:
#8、查看日志文件
查看访问日志
[root@localhost ~]# vi /var/log/nginx/access.log
查看错误日志
[root@localhost ~]# vi /var/log/nginx/error.log
常见错误1:failed (24: Too many open files)
解决方法:参考【修改系统打开最大文件数限制Too many open files】
常见错误2:connect() to 192.168.1.110:8080 failed (13: Permission denied) while connecting to upstream
解决办法:权限问题。查看nginx.conf配置文件中的user参数,修改成root即可(其它解决办法为尝试)。
查看nginx进程 ,发现都是root的进程
[root@localhost ~]# ps aux | grep nginx root 2377 0.0 0.0 48016 1180 ? Ss 23:50 0:00 nginx: master process nginx -c nginx.conf root 2378 0.5 0.1 48488 2180 ? S 23:50 0:01 nginx: worker process root 2381 0.0 0.0 112640 976 pts/0 S+ 23:53 0:00 grep --color=auto nginx
但是nginx.conf配置的user参数是nginix,将其修改为root,然后停止并重启nginx
user root; worker_processes 1;
停止并重启nginx
[root@localhost ~]# nginx -s stop [root@localhost ~]# nginx -c nginx.conf
8、修改系统打开最大文件数限制
vi /etc/security/limits.conf
在最后加上两行:
#* soft core 0 #* hard rss 10000 #@student hard nproc 20 #@faculty soft nproc 20 #@faculty hard nproc 50 #ftp hard nproc 0 #@student - maxlogins 4 * - nproc 655350 * - nofile 655350
最后的“655350”是修改最大打开文件数的限制数值。这个自己看着需要填写吧。不过设置为“102400”之后,就自己而言,很多情况都不会再出现Too many open files的错误了。修改完重新登录就可以见到效果,可以通过 ulimit -n 查看。
查看打开文件最大限制数
[root@localhost ~]# ulimit -n
转载于:https://my.oschina.net/u/2257245/blog/412249
- 点赞
- 收藏
- 分享
- 文章举报
- 服务器PHP+MySQL开发环境搭建 — Nginx反向代理安装
- CentOS7开发环境搭建(二)——反向代理服务器nginx
- Ubuntu下安装Nginx环境以及搭建反向代理服务器
- CentOS7下搭建nginx反向代理服务器 二级域名访问
- 在本地 CentOS 7 上搭建 Web 开发环境 — Web 服务器 nginx
- CentOS7下搭建nginx反向代理服务器使得外网可以二级域名访问内网应用
- 【大型网站技术实践】初级篇:借助Nginx搭建反向代理服务器
- Nginx搭建反向代理服务器过程详解(Windows)
- 阿里云服务器ECS centos7.2搭建nginx环境以及负载均衡
- Nginx搭建反向代理服务器过程详解
- Cacti监控服务器配置教程(基于CentOS+Nginx+MySQL+PHP环境搭建)
- 【服务器环境搭建-Centos】Nginx1.9.9 安装(编译源码)
- 如何搭建web服务器 使用Nginx搭建反向代理服务器
- 【服务器环境搭建-Centos】Nginx1.9.9 配置启用 --待续
- centos6.5环境自动化运维之puppet实现nginx反向代理功能及puppet安装配置详解
- 测试环境搭建之在CentOS 7上安装Nginx服务器
- Nginx搭建反向代理服务器过程详解
- Nginx搭建反向代理服务器过程详解
- android studio开发环境搭建,国内服务器代理下载android sdk
- Nginx搭建反向代理服务器过程详解