nginx linux 绿色,Linux下安装nginx并配置https

Nginx安装

快速安装的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).下载地址:

2).安装

Windows用户可以跳过

Linux安装

注意 一切目录在于 /user/nginx

注:没有wegt 安装

-> yum -y install wget*

1.下载nginx

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/

42e18adbafb699e6e9d81741d0541aa7.png

正常显示这个,如果显示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详细说明明

#运行用户

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;

}

腾讯云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的配置

location配置

location 匹配完毕后会将 url全部拼接到 root

alias 则不会匹配

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值