快速安装的Shell脚本 脚本2019年2月15日的稳定版本 注意自己现在所在根目录 / 新建脚本 vim nginx-install.sh
#!/bin/bash echo "开始执行" cd /usr/local wget http://nginx.org/download/nginx-1.14.2.tar.gz && tar -zvxf nginx-1.14.2.tar.gz cd nginx-1.14.2 yum -y install gcc-c++ && yum -y install pcre pcre-devel && yum -y install zlib zlib-devel && yum -y install openssl openssl-devel mkdir -p /var/temp/nginx ./configure \ --prefix=/usr/local/nginx \ --pid-path=/var/run/nginx/nginx.pid \ --lock-path=/var/lock/nginx.lock \ --error-log-path=/usr/local/nginx/log/error.log \ --http-log-path=/usr/local/nginx/log/access.log \ --with-http_gzip_static_module \ --http-client-body-temp-path=/var/temp/nginx/client \ --http-proxy-temp-path=/var/temp/nginx/proxy \ --http-fastcgi-temp-path=/var/temp/nginx/fastcgi \ --http-uwsgi-temp-path=/var/temp/nginx/uwsgi \ --http-scgi-temp-path=/var/temp/nginx/scgi make && make install echo "安装完毕" |
执行脚本 chmod +x nginx-install.sh
./nginx-install.sh 启动nginx cd /usr/local/nginx
./nginx
手动下载并安装 1).下载地址:
nginx官网
2).安装 Windows用户可以跳过 nginx下载地址 Linux安装
注意 一切目录在于 /user/nginx
注:没有wegt 安装
-> yum -y install wget*
1.下载nginx
->wget http://nginx.org/download/nginx-1.10.3.tar.gz
2.解压
->tar -zvxf nginx-1.10.3.tar.gz
因为下载的为源码包,需要进行编译,所以需要gcc,pcre ,zlib ,openssl 等环境 3.安装这些环境 (1).总的一句话代码
->yum -y install gcc-c++ && yum -y install pcre pcre-devel && yum -y install zlib zlib-devel && yum -y install openssl openssl-devel
(2).分开书写,方便查错 安装gcc #
-> yum -y install gcc-c++
安装 pcre #
-> yum -y install pcre pcre-devel
安装 zlib #
-> yum -y install zlib zlib-devel
安装 openssl #
-> yum -y install openssl openssl-devel
4.生成make 假设你的解压目录在 user/nginx
解压nginx 进入文件夹 进入文件夹后发现没有make 这样就无法编译
创建一个nginx临时目录 :
->mkdir -p /var/temp/nginx
执行 configure命令 (后面的参数别硬记,没必要) ./configure \
--prefix=/user/local/nginx \
--pid-path=/var/run/nginx/nginx.pid \
--lock-path=/var/lock/nginx.lock \
--error-log-path=/var/log/nginx/error.log \
--http-log-path=/var/log/nginx/access.log \
--with-http_gzip_static_module \
--http-client-body-temp-path=/var/temp/nginx/client \
--http-proxy-temp-path=/var/temp/nginx/proxy \
--http-fastcgi-temp-path=/var/temp/nginx/fastcgi \
--http-uwsgi-temp-path=/var/temp/nginx/uwsgi \
--http-scgi-temp-path=/var/temp/nginx/scgi 5.make && make install
- /user/local目录下有了nginx
- cd /user/local/nginx/sbin
- ./nginx
访问http://ip/ 3).启动
解压,运行(nginx -c conf/nginx.conf),默认使80端口,日志见于logs
netstat -ano 命令查看端口使用情况 services.msc 启动或停用服务
启动注意端口是否被占用,apache/tomcat等
启动类似frp等反向代{过}{滤}理
4).使用
http://localhost/ 注:443 https访问 https://localhost/
![这里写图片描述](https://img-blog.csdn.net/20170524163847852?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvYm9vbV9tYW4=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast) 正常显示这个,如果显示Apache,等,但是nginx又启动成功没有报错。我出现过。 是浏览器缓存的原因,不知道说好还是坏。转换浏览器模式,内核,极速等。尝试下
nginx相关操作
nginx 服务器重启命令,关闭 nginx -s reload :修改配置后重新加载生效 nginx -s reopen :重新打开日志文件 nginx -t -c /path/to/nginx.conf 测试nginx配置文件是否正确
关闭nginx: nginx -s stop :快速停止nginx quit :完整有序的停止nginx
其他的停止nginx 方式:
ps -ef | grep nginx
kill -QUIT 主进程号 :从容停止Nginx kill -TERM 主进程号 :快速停止Nginx pkill -9 nginx :强制停止Nginx
启动nginx: nginx -c /path/to/nginx.conf
平滑重启nginx: kill -HU#主进程号
conf详细说明明
conf配置说明原文:http://www.cnblogs.com/xiaogangqq123/archive/2011/03/02/1969006.html
#运行用户 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; deny all; } } } |
以上是一些基本的配置,使用Nginx最大的好处就是负载均衡 如果要使用负载均衡的话,可以修改配置http节点如下:
#设定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服务器传 } } } |
关于负载均衡
拓展: 1、轮询(默认) 每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器down掉,能自动剔除。 2、weight 指定轮询几率,weight和访问比率成正比,用于后端服务器性能不均的情况。 例如: upstream bakend { server 192.168.159.10 weight=10; server 192.168.159.11 weight=10; } 3、ip_hash 每个请求按访问ip的hash结果分配,这样每个访客固定访问一个后端服务器,可以解决session的问题。 例如: upstream resinserver{ ip_hash; server 192.168.159.10:8080; server 192.168.159.11:8080; } 4、fair(第三方) 按后端服务器的响应时间来分配请求,响应时间短的优先分配。 upstream resinserver{ server server1; server server2; fair; } 5、url_hash(第三方) 按访问url的hash结果来分配请求,使每个url定向到同一个后端服务器,后端服务器为缓存时比较有效。 例:在upstream中加入hash语句,server语句中不能写入weight等其他的参数,hash_method是使用的hash算法 upstream resinserver{ server squid1:3128; server squid2:3128; hash $request_uri; hash_method crc32; } tips: upstream resinserver{#定义负载均衡设备的Ip及设备状态 ip_hash; server 127.0.0.1:8000 down; server 127.0.0.1:8080 weight=2; server 127.0.0.1:6801; server 127.0.0.1:6802 backup; } 在需要使用负载均衡的server中增加 proxy_pass http://resinserver/; 每个设备的状态设置为: 1.down 表示单前的server暂时不参与负载 2.weight 默认为1.weight越大,负载的权重就越大。 3.max_fails :允许请求失败的次数默认为1.当超过最大次数时,返回proxy_next_upstream 模块定义的错误 4.fail_timeout:max_fails次失败后,暂停的时间。 5.backup: 其它所有的非backup机器down或者忙的时候,请求backup机器。所以这台机器压力会最轻。 nginx支持同时设置多组的负载均衡,用来给不用的server来使用。 client_body_in_file_only 设置为On 可以讲client post过来的数据记录到文件中用来做debug client_body_temp_path 设置记录文件的目录 可以设置最多3层目录 location 对URL进行匹配.可以进行重定向或者进行新的代{过}{滤}理 负载均衡 |
nginx配置ssl证书,微信小程序服务器
server { server_name 192.168.1.100; # 客户端直接用IP来访问 # 这是默认的SSL端口,可以修改为其它端口,浏览器用https访问url时,默认就是用这个端口, # 如果下面listen修改成其它端口,那浏览器用https访问时,就要指定端口了。 listen 443; ssl on; #地址 ssl_certificate /home/xiaobai/server_cert.crt; #使用无密码私钥 ssl_certificate_key /usr/xiaobai/private.key; } |
详细 有针对性配置:http://www.cnblogs.com/ajianbeyourself/p/3898911.html 腾讯云Nginx证书配置
2. Nginx 证书部署 2.1 获取证书 Nginx文件夹内获得SSL证书文件 1_www.domain.com_bundle.crt 和私钥文件 2_www.domain.com.key, 1_www.domain.com_bundle.crt 文件包括两段证书代码 “-----BEGIN CERTIFICATE-----”和“-----END CERTIFICATE-----”, 2_www.domain.com.key 文件包括一段私钥代码“-----BEGIN RSA PRIVATE KEY-----”和“-----END RSA PRIVATE KEY-----”。 2.2 证书安装 将域名 www.domain.com 的证书文件1_www.domain.com_bundle.crt 、私钥文件2_www.domain.com.key保存到同一个目录,例如/usr/local/nginx/conf目录下。 更新Nginx根目录下 conf/nginx.conf 文件如下: server { listen 443; server_name www.domain.com; #填写绑定证书的域名 ssl on; ssl_certificate 1_www.domain.com_bundle.crt; ssl_certificate_key 2_www.domain.com.key; ssl_session_timeout 5m; ssl_protocols TLSv1 TLSv1.1 TLSv1.2; #按照这个协议配置 ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;#按照这个套件配置 ssl_prefer_server_ciphers on; location / { root html; #站点目录 index index.html index.htm; } } 配置完成后,先用bin/nginx –t来测试下配置是否有误,正确无误的话,重启nginx。就可以使 https://www.domain.com 来访问了。 注: 配置文件参数 说明 listen 443 SSL访问端口号为443 ssl on 启用SSL功能 ssl_certificate 证书文件 ssl_certificate_key 私钥文件 ssl_protocols 使用的协议 ssl_ciphers 配置加密套件,写法遵循openssl标准 2.3 使用全站加密,http自动跳转https(可选) 对于用户不知道网站可以进行https访问的情况下,让服务器自动把http的请求重定向到https。 在服务器这边的话配置的话,可以在页面里加js脚本,也可以在后端程序里写重定向,当然也可以在web服务器来实现跳转。Nginx是支持rewrite的(只要在编译的时候没有去掉pcre) 在http的server里增加rewrite ^(.*) https://$host$1 permanent; 在80端口上 添加 rewrite ^ https://$server_name:443$request_uri? permanent; server { listen 80; server_name localhost; rewrite ^ https://$server_name:443$request_uri? permanent; #charset koi8-r; #access_log logs/host.access.log main; location / { root html; index index.html index.htm; } 这样就可以实现80进来的请求,重定向为https了。 |
关于Nginx的配置 |