首页 文章 精选 留言 我的

精选列表

搜索[请求],共10001篇文章
优秀的个人博客,低调大师

修改Nginx配置实现https请求(SSL 证书部署)

说到 [Nginx]() 服务器,个人认为最大特点就是轻量级和高性能。通过在几台不同的服务器上进行测试,发现它的并发能力特别强,并且相对而言吃的[内存]()少很多。目前已是绝大多数站长的首选 HTTP 和反向代理服务器。站长自己的网站,包括承接企业服务器运维服务所采用的都是 Nginx。Apache 当然也可以,如果有兴趣,可以看一下 Nginx 和 Apache 区别对比。 本文主要分享下 Nginx 安装 SSL 模块并且开启配置 HTTPS 的操作过程。 一、Nginx 的 SSL 模块安装 查看 nginx 是否安装 http_ssl_module 模块。 $ /usr/local/nginx/sbin/nginx -V 如果出现 configure arguments: –with-http_ssl_module, 则已安装(下面的步骤可以跳过,进入 nginx.conf 配置)。 下载 Nginx 安装包,当然是要去 Nginx 官网下载。 下载安装包到 src 目录 $ cd /usr/local/src $ wget http://nginx.org/download/nginx-1.15.9.tar.gz 解压安装包。 $ tar -zxvf nginx-1.15.9.tar.gz 配置 SSL 模块。 $ cd nginx-1.15.9 $ ./configure --prefix=/usr/local/nginx --with-http_ssl_module 使用 make 命令编译(使用make install会重新安装nginx),此时当前目录会出现 objs 文件夹。 用新的 nginx 文件覆盖当前的 nginx 文件。 $ cp ./objs/nginx /usr/local/nginx/sbin/ 再次查看安装的模块(configure arguments: –with-http_ssl_module说明ssl模块已安装)。 $ /usr/local/nginx/sbin/nginx -V nginx version: nginx/1.15.9 ... configure arguments: --with-http_ssl_module 二、SSL 证书部署 这里使用的是阿里云的免费证书,期限为1年,申请地址在此。 找不到阿里云免费ssl入口的可以参考文章:阿里云免费SSL HTTPS证书没有了?原来是被隐藏了!(图) 下载申请好的 ssl 证书文件压缩包到本地并解压(这里是用的 pem 与 key 文件,文件名可以更改)。 在 nginx 目录新建 cert 文件夹存放证书文件。 $ cd /usr/local/nginx $ mkdir cert 将这两个文件上传至服务器的 cert 目录里。这里使用 mac 终端上传至服务器的 scp 命令(这里需要新开一个终端,不要使用连接服务器的窗口): $ scp /Users/yourname/Downloads/ssl.pem root@xxx.xx.xxx.xx:/usr/local/nginx/cert/ $ scp /Users/yourname/Downloads/ssl.key root@xxx.xx.xxx.xx:/usr/local/nginx/cert/ scp [本地文件路径,可以直接拖文件至终端里面] [<服务器登录名>@<服务器IP地址>:<服务器上的路径>] 三、Nginx.conf 配置 编辑 /usr/local/nginx/conf/nginx.conf 配置文件: 配置 https server。注释掉之前的 http server 配置,新增 https server: server { # 服务器端口使用443,开启ssl, 这里ssl就是上面安装的ssl模块 listen 443 ssl; # 域名,多个以空格分开 server_name hack520.com www.hack520.com; # ssl证书地址 ssl_certificate /usr/local/nginx/cert/ssl.pem; # pem文件的路径 ssl_certificate_key /usr/local/nginx/cert/ssl.key; # key文件的路径 # ssl验证相关配置 ssl_session_timeout 5m; #缓存有效期 ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4; #加密算法 ssl_protocols TLSv1 TLSv1.1 TLSv1.2; #安全链接可选的加密协议 ssl_prefer_server_ciphers on; #使用服务器端的首选算法 location / { root html; index index.html index.htm; } } 将 http 重定向 https。 server { listen 80; server_name hack520.com www.hack520.com; return 301 https://$server_name$request_uri; } 四、重启 nginx $ /usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf 如果 80 端口被占用,用kill [id]来结束进程: # 查看端口使用 $ netstat -lntp Active Internet connections (only servers) Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 21307/nginx: master tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 3072/sshd tcp 0 0 0.0.0.0:443 0.0.0.0:* LISTEN 21307/nginx: master # 结束 80 端口进程 $ kill 21307 再次重启 nginx: $ /usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf 或者: service nginx restart 往期文章 Nginx系列教程(1)nginx基本介绍和安装入门 Nginx系列教程(2)nginx搭建静态资源web服务器 Nginx系列教程(3)nginx缓存服务器上的静态文件 Nginx系列教程(4)nginx处理web应用负载均衡问题以保证高并发 Nginx系列教程(5)如何保障nginx的高可用性(keepalived) Nginx系列教程(6)nginx location 匹配规则详细解说 Nginx系列教程(7)nginx rewrite配置规则详细说明 Nginx系列教程(8)nginx配置安全证书SSL Nginx系列教程(9)nginx 解决session一致性 Nginx系列教程(10)基于nginx解决前端访问后端服务跨域问题(Session和cookie无效)基于Nginx解决前端访问后端服务跨域问题(Session和cookie无效)")

优秀的个人博客,低调大师

CentOS 7.1.1503 varnish动静分离反代用户请求

前言 <> 非常感谢Kason老师,您是我们成功的蜡烛,燃烧着自己,照亮我们前进的道路。 varnish配置动静分离时,这些问题困扰了两周: 环境:varnish做为反代,你们都知道的:varnish,nginx, haproxy都可以做为反代服务器,varnish比较擅长缓存。后端主机一个提供动态资源及变化的资源(php, css, js),一个提供静态资源(images) 每次访问varnish的6081端口,phpinfo.php和php-mysql.php都可以正常访问,肯定没有问题,但访问wodpress时,要么是NOT FOUND要么是直接将目录索引显示出来。 > 总结: >对中小型站点的整个架构没有一个完整、清晰的认识。 >我只是将老师的配置粘贴进去,从不去想真正的含义。 > * 学到puppet时,越觉得前面的东西是多么重要,了解一个个架构,才能更好的驾驶运维工具本身。 站点架构 在接入层将动静分离,一般varnish不会做动静分离 varnish接收到图片和js,css文件后,将其反代到不同的主机。图片至分布式文件系统,js,css文件反代至业务层。 所以如果在varnish动静分离,首先要确保各个资源都代理至正确的主机,而后将所有的资源全部代理至动态服务器。 环境 配置前提 所有节点时间同步。 关闭防火墙、SELinux。 yum源:EPEL、Base。 ~]# ntpdate 0.centos.pool.ntp.org ~]# iptables -F ~]# setenforce 0 配置静态服务器 安装程序包 ~]# yum -y install httpd 启动服务 ~]# systemctl start httpd.service 测试访问 http://172.16.0.68/ Testing 123.. 配置动态服务器 安装程序包 ~]# yum -y install httpd php php-mysql mariadb-server php-mbstring php-mcrypt 启动httpd服务 ~]# systemctl start httpd.service 测试访问httpd服务 http://172.16.0.69/ Testing 123.. 配置mariadb-server ~]# vim /etc/my.cnf.d/server.cnf [mysqld] skip_name_resolve = ON innodb_file_per_table = ON 启动mariadb服务 ~]# systemctl start mariadb.service ~]# netstat -tnl Active Internet connections (only servers) Proto Recv-Q Send-Q Local Address Foreign Address State tcp 0 0 0.0.0.0:3306 0.0.0.0:* LISTEN tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN tcp6 0 0 :::80 :::* LISTEN tcp6 0 0 :::22 :::* LISTEN tcp6 0 0 ::1:25 :::* LISTEN 授权用户,供wordpress使用 [root@localhost ~]# mysql MariaDB [(none)]> CREATE DATABASE wordpress; Query OK, 1 row affected (0.00 sec) MariaDB [(none)]> GRANT ALL ON wordpress.* TO 'wpuser'@'172.16.0.%' IDENTIFIED BY 'wppass'; Query OK, 0 rows affected (0.00 sec) MariaDB [(none)]> FLUSH PRIVILEGES; Query OK, 0 rows affected (0.00 sec) 测试连接mysql ~]# mysql -uwpuser -pwppass -h172.16.0.69 提供开源php资源 ~]# cp wordpress-4.9.1-zh_CN.tar.gz /var/www/html/ 展开php程序,为其链接 ~]# tar xf wordpress-4.9.1-zh_CN.tar.gz ~]# ln -sv wordpress wp ~]# ll total 9912 -rw-------. 1 root root 1637 Dec 6 02:45 anaconda-ks.cfg -rw-r--r--. 1 root root 1556 Jan 14 14:58 genaral_test.sh drwxr-xr-x. 1 nobody nfsnobody 498 Nov 30 20:20 wordpress -rw-r--r--. 1 root root 10130710 Dec 1 18:57 wordpress-4.9.1-zh_CN.tar.gz lrwxrwxrwx. 1 root root 9 Jan 14 15:41 wp -> wordpress -rw-r--r--. 1 root root 832 Jan 14 14:58 yum.sh 提供连接mariadb-server的配置 /** WordPress数据库的名称 */ define('DB_NAME', 'wordpress'); /** MySQL数据库用户名 */ define('DB_USER', 'wpuser'); /** MySQL数据库密码 */ define('DB_PASSWORD', 'wppass'); /** MySQL主机 */ define('DB_HOST', '172.16.0.69'); 提供测试页面 web测试页面 ~]# cat /var/www/html/index.html <h1>172.16.0.69</h1> php环境测试 ~]# cat /var/www/html/phpinfo.php <html> <title>Test Page</title> <body> <h1>172.16.0.69</h1> <?php phpinfo(); ?> </body> </html> php-mysql测试页面 ~]# cat /var/www/html/php-mysql.php <?php $conn = mysql_connect('172.16.0.69','wpuser','wppass'); if ($conn) echo "connect 172.16.0.69 success"; else echo "connect 172.16.0.69 failure"; ?> 测试连接 给静态服务器一份php程序 ~]# scp -r /var/www/html/{wordpress,wp} 172.16.0.68:/var/www/html 配置varnish缓存服务器 安装varnish ~]# yum -y install varnish 配置varnish ~]# vim /etc/varnish/varnish.params ‘VARNISH_LISTEN_PORT=80 VARNISH_STORAGE="file,/data/varnish/cache,1g" ~]# vim /etc/varnish/default.vcl backend default { .host = "172.16.0.68"; .port = "80"; } backend appsrv { .host = "172.16.0.69"; .port = "80"; } sub vcl_recv { if (req.url ~ "(?i)\.(php|jsp|do)$") { set req.backend_hint = appsrv; } if (req.url ~ "(?i)\.(css|js)$") { set req.backend_hint = appsrv; } if (req.url ~ "(?i)\.(jpg|jpeg|png|gif)$") { set req.backend_hint = default; } else { set req.backend_hint = appsrv; } } 准备目录 ~]# install -d -v -o varnish -g varnish /data/varnish/cache 启动varnish ~]# systemctl start varnish.service ~]# netstat -tnl Active Internet connections (only servers) Proto Recv-Q Send-Q Local Address Foreign Address State tcp 0 0 127.0.0.1:6082 0.0.0.0:* LISTEN tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 测试访问 查看是否动静分离 172.16.0.68静态服务器上查看 172.16.0.69动态服务器上查看 本文转自 lccnx 51CTO博客,原文链接:http://blog.51cto.com/sonlich/2060785,如需转载请自行联系原作者

资源下载

更多资源
优质分享App

优质分享App

近一个月的开发和优化,本站点的第一个app全新上线。该app采用极致压缩,本体才4.36MB。系统里面做了大量数据访问、缓存优化。方便用户在手机上查看文章。后续会推出HarmonyOS的适配版本。

Mario

Mario

马里奥是站在游戏界顶峰的超人气多面角色。马里奥靠吃蘑菇成长,特征是大鼻子、头戴帽子、身穿背带裤,还留着胡子。与他的双胞胎兄弟路易基一起,长年担任任天堂的招牌角色。

Oracle

Oracle

Oracle Database,又名Oracle RDBMS,或简称Oracle。是甲骨文公司的一款关系数据库管理系统。它是在数据库领域一直处于领先地位的产品。可以说Oracle数据库系统是目前世界上流行的关系数据库管理系统,系统可移植性好、使用方便、功能强,适用于各类大、中、小、微机环境。它是一种高效率、可靠性好的、适应高吞吐量的数据库方案。

Apache Tomcat

Apache Tomcat

Tomcat是Apache 软件基金会(Apache Software Foundation)的Jakarta 项目中的一个核心项目,由Apache、Sun 和其他一些公司及个人共同开发而成。因为Tomcat 技术先进、性能稳定,而且免费,因而深受Java 爱好者的喜爱并得到了部分软件开发商的认可,成为目前比较流行的Web 应用服务器。