centOS7安装配置nginx亲测

nginx代理https站点(亲测),nginxhttps

nginx代理https站点(亲测)

首先,我相信大家已经搞定了nginx正常代理http站点的方法,下面重点介绍代理https站点的配置方法,以及注意事项,因为目前大部分站点有转换https的需要所以学习这个方法也是很重要的,我就不啰嗦了
直奔主题了………………

 

 

 

测试环境 

nginx版本 nginx/1.6.3

php版本  5.5.38

mysql版本 5.5.32

 

前提,后端web节点已经可以同时监听80,443端口(站点可以正常通过web节点访问http和https),具体配置https的方法网上一大堆,大家可以百度一下
生成一个ssl的免费证书 搭建https的web站点,
 解析web本机ip的话可以分别实现http和https的访问,(注意:web节点没有设置rewrite规则实现http到https的自动跳转)(如果不需要nginx做web代理
的情况下 web节点需要在location字段下配置rewrite
规则才能实现http到https的自动跳转)

附上后端web nginx配置文件 (phpadmin.ff.com)

图片 1

 

 我们要做的重点来了

Nginx代理已经分别开启80 和443的同时监听
配置成类似后端web节点的配置,这里我们以phpadmin.ff.com 这个域名进行测试 
nginx代理上配置如下

 

通用配置nginx.conf

为了方便 我的upstream里面只放了一个web节点
另外一个做备份使用,注意我的upstream 并没有在后端加上:443这样的信息

图片 2

 

 

(include)Phpadmin.conf配置(注意红色箭头的部分,如果不加入这条规则
 用户必须手动输入
而不能实现http到https的自动跳转)

 图片 3

 

这里标注的地方就是为了实现 http访问到https的自动切换
,如果不加这条rewrite 需要自己手动输入 访问,

 

总结:

1.nginx在做http代理时 定义的upstream默认端口号为80
(所以准确来说upstream并不是默认端口就是80,80只是nginx代理的一部分)

2.nginx在做https代理的时候,默认 upstream 是https的协议访问443端口。

3.总之如果web对外提供https http 服务 那么在web上配置https 和http
做一下rewrite

4.如果nginx代理对外提供https http服务 那么在nginx代理上配置https 和http
做一下rewrite ,两个不能同时做rewrite
不然访问日志会爆炸,重定向一个死循环

 

目前还有的问题就是,做phpadmin的https
没有内容上的不完整显示,做discuz和WordPress的时候无法显示图片和一些网页设计内容(只显示了文本),这个有可能和https协议加密的内容有关。目前只有Google大神把所有内容都做了https处理。一般在登录和做交易的时候会自动跳转到https(可以使用nginx的基于扩展名的rewrite)

nginx代理https站点(亲测)
首先,我相信大家已经搞定了nginx正常代理http站点的方法,下面重点介绍代…

nginx代理https站点(亲测)

nginx 文件结构

在Ubuntu上,下面的配置是有效的:

1.nginx安装:

首先,我相信大家已经搞定了nginx正常代理http站点的方法,下面重点介绍代理https站点的配置方法,以及注意事项,因为目前大部分站点有转换https的需要所以学习这个方法也是很重要的,我就不啰嗦了
直奔主题了………………

端口服务

linx 系统centos7.4 nginx1.9.9

nginx文件夹下的nginx.conf文件为nginx入口配置文件,
该文件下每个server指令都可以设置一个端口,
当我们有多个网站时,可以创建多个server指令,
通过server指令的proxy_pass
同样这种请求的分发可以用来减轻服务器压力的作用

node + nginx 项目

server {
    listen 80;
    server_name example.com;
    location / {
        proxy_pass https://127.0.0.1:3000;
    }
}

'use strict'
const express = require('express'),
    app = express()

app.use(express.static('dist'))
app.use(bodyParser())

app.use(require('./routes/user'))

app.listen(3000,'127.0.0.1', () => console.log('正在运行'))
server {
      listen 80;
      server_name news.example.com;
      location / {
          proxy_pass http://192.168.1.123;
          proxy_set_header Host $host;
      }
 }

  Nginx官网:

 

静态服务

如果你的网站只是一个静态文件,则可以使用如下配置:

server {
    listen 80;
    server_name example.com;
     location / { "/" 可以替换为 路径+正则  实现匹配分发
        root 项目文件目录(绝对路径)  //默认为nginx文件夹下的html文件夹
        index index.html index.htm index.php; //网站匹配规则
    }
}

在我做node项目的时候,考虑到多站点nginx如何实现,在linux服务器上测试一天多,各种改nginx配置文件信息,都不起作用,当时就有疑惑我的项目是node
express
项目本身提供静态中间件,可是我又在server中添加root绝对路径指向,就有了一直不显示的问题。

如果使用 $sheme://$host 代替 则报 502 错误。

  Nginx下载地址:

 

1.1Nginx安装环境:

 

  

测试环境 

yum install -y gcc pcre pcre-devel zlib zlib-devel openssl openssl-devel

nginx版本 nginx/1.6.3

  tips:Nginx是C语言开发的,建议在linux上运行,本教程使用CentOS7.x作为安装环境。

php版本  5.5.38

  安装nginx需要先在官网上下载源码,先进行源码编译,编译依赖gcc环境,需要安装gcc:

mysql版本 5.5.32

yum install gcc-c++

 

PCRE(PerlCompatible Regular Expressions) 是一个 Perl 库,包括 perl
兼容的正则表达式库。nginx 的 http 模块使用 pcre
来解析正则表达式,所以需要在 linux 上安装 pcre 库。

前提,后端web节点已经可以同时监听80,443端口(站点可以正常通过web节点访问http和https),具体配置https的方法网上一大堆,大家可以百度一下
生成一个ssl的免费证书 搭建https的web站点,
 解析web本机ip的话可以分别实现http和https的访问,(注意:web节点没有设置rewrite规则实现http到https的自动跳转)(如果不需要nginx做web代理
的情况下 web节点需要在location字段下配置rewrite
规则才能实现http到https的自动跳转)

yum install -y pcre pcre-devel

附上后端web nginx配置文件 (phpadmin.ff.com)

  tips:pcre-devel 是使用 pcre 开发的一个二次开发库。nginx 也需要此库。

图片 4

zlib 库提供了很多种压缩和解压缩的方式,nginx 使用 zlib 对 http
包的内容进行 gzip,所以需要在 linux 上安装 zlib 库。

 

yum install -y zlib zlib-devel

 我们要做的重点来了

OpenSSL
是一个强大的安全套接字层密码库,囊括主要的密码算法、常用的密钥和证书封装管理功能及
SSL 协议,并提供丰富的应用程序供测试或其它目的使用。

Nginx代理已经分别开启80 和443的同时监听
配置成类似后端web节点的配置,这里我们以phpadmin.ff.com 这个域名进行测试 
nginx代理上配置如下

nginx 不仅支持 http 协议,还支持 https(即在 ssl 协议上传输
http),所以需要在 linux 安装 openssl 库。

 

yum install -y openssl openssl-devel

通用配置nginx.conf

1.2下载Nginx 编译安装:

为了方便 我的upstream里面只放了一个web节点 另外一个做备份使用,注意我的upstream
并没有在后端加上:443这样的信息

Nginx官网提供了三个类型的版本

图片 5

  • Mainline version:Mainline 是 Nginx
    目前主力在做的版本,可以说是开发版
  • Stable version:最新稳定版,生产环境上建议使用的版本
  • Legacy versions:遗留的老版本的稳定版

 

演示使用的是nginx-1.13.4

 

  1.2.1:下载Nginx

(include)Phpadmin.conf配置(注意红色箭头的部分,如果不加入这条规则
 用户必须手动输入
而不能实现http到https的自动跳转)

 

 图片 6

wget http://nginx.org/download/nginx-1.13.4.tar.gz

 

  1.2.2解压:

这里标注的地方就是为了实现 http访问到https的自动切换
,如果不加这条rewrite
需要自己手动输入https://phpadmin.ff.com
访问,

tar -zxvf nginx-1.13.4.tar.gz

 

  1.2.3进入 nginx 的根目录:

总结:

cd nginx-1.13.4

1.nginx在做http代理时 定义的upstream默认端口号为80 (所以准确来说upstream并不是默认端口就是80,80只是nginx代理的一部分)

  1.2.4:configure 配置(这里只配置安装目录其他参数默认)

2.nginx在做https代理的时候,默认 upstream 是https的协议访问443端口。

./configure --prefix=/usr/local/nginx

3.总之如果web对外提供https http 服务 那么在web上配置https 和http
做一下rewrite

  tips:如果./configure不可执行,需要先设置./configure为可执行文件

4.如果nginx代理对外提供https http服务 那么在nginx代理上配置https 和http
做一下rewrite ,两个不能同时做rewrite
不然访问日志会爆炸,重定向一个死循环

chmod +x configure 给configure添加执行权限

 

  1.2.5:编译安装

目前还有的问题就是,做phpadmin的https
没有内容上的不完整显示,做discuz和WordPress的时候无法显示图片和一些网页设计内容(只显示了文本),这个有可能和https协议加密的内容有关。目前只有Google大神把所有内容都做了https处理。一般在登录和做交易的时候会自动跳转到https(可以使用nginx的基于扩展名的rewrite)

make  编译 (make的过程是把各种语言写的源码文件,变成可执行文件和各种库文件)make install   安装 (make install是把这些编译出来的可执行文件和库文件复制到合适的地方)

2.Nginx 启动与停止

  2.1判断配置文件是否正确

cd /usr/local/nginx/sbin ./nginx -t或者指定配置文件./nginx -t -c /usr/local/nginx/conf/nginx.conf

  2.2 启动

cd /usr/local/nginx/sbin/./nginx

注意:执行./nginx 启动 nginx,这里可以 – c 指定加载的 nginx
配置文件,如下:

cd /usr/local/nginx/sbin/./nginx -c /usr/local/nginx/conf/nginx.conf

如果不指定 – c,nginx 在启动时默认加载 conf/nginx.conf
文件,此文件的地址也可以在编译安装 nginx 时指定./configure
的参数(–conf-path= 指向配置文件(nginx.conf))

查询 nginx 进程:

  图片 7

1410 是 nginx 主进程的进程 id,1411 是 nginx 工作进程的进程 id

  2.3停止与重启 nginx:

  2.3.1:停止

cd /usr/local/nginx/sbin./nginx -s stop

  tips:此方式相当于先查出 nginx 进程 id 再使用 kill 命令强制杀掉进程。

  2.3.2:完整停止:

cd /usr/local/nginx/sbin ./nginx -s quit

  tips:此方式停止步骤是待 nginx 进程处理任务完毕进行停止。

  2.3.3:重启 nginx

  方式一:先停止再启动:

对 nginx 进行重启相当于先停止 nginx 再启动
nginx,即先执行停止命令再执行启动命令。

./nginx -s quit ./nginx

  方式二:重新加载配置文件:

当 nginx 的配置文件 nginx.conf 修改后,要想让配置生效需要重启
nginx,使用 – s reload 不用先停止 nginx 再启动 nginx 即可将配置信息在
nginx 中生效,如下:

./nginx -s reload

  3.测试Nginx

Nginx 安装成功,启动 nginx,即可访问虚拟机上的
Nginx。如果Nginx启动了,其他电脑访问不了请设置一下防火墙

  图片 8

  

  关于nginx配置完成之后,主机与linux系统之间能够ping通数据但是无法访问nginx欢迎页:

    主要在于防火墙的配置:centOS7以上版本防火墙操作:

  添加端口

firewall-cmd --permanent --zone=public --add-port=80/tcp 

  或者

firewall-cmd --permanent --zone=public --add-service=http

  重新load

firewall-cmd --reload

  检查是否生效

firewall-cmd --zone=public --query-port=80/tc

  列出所有的开放端口

firewall-cmd --list-all

  删除端口
  

firewall-cmd --zone=public --remove-port=80/tcpfirewall-cmd --zone=public --remove-service=http

欢迎留下宝贵意见。点关注不迷路。

相关文章