GoDaddy SSL(UCC/SAN SSL)证书从购买到Nginx配置

Question:项目里有5个域名要添加 https

Answer:

第一 购买ssl key 这边是决定在godaddy 购买 并选择 UCC/SAN SSL 有5个san 而我要保护的刚好是5个域名 这样的好处是费用比较低,但是对运维的要求可能就比较高,很多要运维操作的,而不像国内的,给钱就全搞定了,直接给你个crt文件
官方购买链接
https://sg.godaddy.com/zh/web-security/ssl-certificate

第二 动手操作过程
1) 生成key
openssl req -new -newkey rsa:2048 -nodes -keyout 您的域名.key -out 您的域名.csr
Country Name (2 letter code) [AU]:CN(CN就代表中国)
State or Province Name (full namne) [Some-State]:Guangdong(填省份)
Locality Name (eg, city) []:Shaoguan(填城市名)
Organization Name (eg, company) [Internet Widgits Pty Ltd]:XXX.com
Organizational Unit Name (eg, section) []:DBA
Common Name (e.g. server FQDN or YOUR name) []: 一定要注意 这里要填写 5个SAN中的一个哦 这里填写最终认证的网址,如:xxx.com(加不加www都是可以的,加或不加,godaddy都会同时认证www和不带www的。见godaddy的说明 http://support.godaddy.com/help/article/5343/generating-a-certificate-signing-request?pc_split_value=4)
Email Address []:admin@xxx.com(最好是以域名为后缀的邮箱,填写其它的也行,)
Please enter the following ‘extra’ attributes to be sent with your certificate request
A challenge password []:(留空)
An optional company name []:(留空)

#要注意这个哦 一定要注意 这里要填写 5个SAN中的一个哦
Common Name (eg, your name or your server’s hostname) []:pay.game.com

2)
添加主题备用名称 (SAN)
ucc 添加主题备用名称
https://certs.godaddy.com/cert/advanced/jkl4oaea7onn3qfhjdmecmd7kydjy6c6

3)
(name of your certificate).csr,把里面的内容粘到godaddy的相应表单内,然后等待审核

4) 如果域名不在你的这个帐号中 就要 Verify domain ownership
我一般选择HTML Page 按要求 上传个文件到web目录下

验证 ownship
https://sg.godaddy.com/zh/help/ssl-html-dns-7452
https://sg.godaddy.com/zh/help/verify-domain-ownership-html-or-dns-7452

5)审核过了,去GoDaddy下载生成的证书,选择证书时,服务器类型选择 other ,不要问我为什么 哈哈

这里要注意,下载回来的是2个crt文件,需要运行下面命令把他们合并成一个
教程 http://nginx.org/en/docs/http/configuring_https_servers.html#chains

cat www.mysite.com.crt gd_bundle.crt > mysite_combined.crt

6)修改或者添加 nginx的配置文件

ssl_certificate指向crt文件位置,ssl_certificate_key指向key文件位置(一开始自己生成的那个pri key ),nginx SSL就可以工作了。

server {
#listen [::]:80;
#listen [::]:80 ipv6only=on;
listen 443 ssl;
server_name game.com ;
ssl_certificate /data/game.com.crt;
ssl_certificate_key /data/game.com.key;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers HIGH:!aNULL:!MD5;

https 测试
打开你添加了key 的那个站点,
或者
https://casecurity.ssllabs.com/

参考
https://www.godaddy.com/help/ssl-certificates-1000006?v=1

Nginx配置GoDaddy SSL证书步骤

nginx 域名跳转配置

如下 www.game.com game.com 都 跳转到另外一个域名 pay.com

[root@web1 host]# cat www.game.com.conf
server {
listen 80;
server_name www.game.com game.com;
if ($host = 'www.game.com' ) {

rewrite ^(.*)$ https://pay.com/$1 permanent;
}

if ($host = 'yahgame.com') {

rewrite ^(.*)$ https://pay.com/$1 permanent;
}
}

Nginx 域名跳转配置

阿里云 和nginx 启用IPV6支持

起因:
因苹果官方ipv6审核问题,客户端和运营就过来了,说什么的为什么服务器没有配置ipv6
于是 我看了一下,原来系统是没有的,但是为了以防万一 加上--with-ipv6 我重新打包了mysql rpm 包, 然后直接替换掉bin 文件 哈哈

为了一致性的考虑(新版本Nginx必须推荐这样做),请使用分开监听的方法:

listen 80;
listen [::]:80 ipv6only=on;

当您希望访问者通过 IPv6 地址访问您的域名时,您可以使用 AAAA 记录设置域名解析。

Nginx监听IPv6地址端口的正确操作方法

阿里云启用IPV6支持

nginx开启IPV6支持配置

配置Nginx使其支持IPv6

针对苹果官方ipv6审核的综合解决方案

Nginx安装Let's Encrypt免费SSL证书 on freebsd

要先关闭 nginx

git clone https://github.com/letsencrypt/letsencrypt
cd letsencrypt
./letsencrypt-auto certonly --standalone --email evan886@gmail.com -d linuxchina.net -d www.linuxchina.net --debug

root@freebsdsfo2-01:/data/www/ssl/letsencrypt # ./letsencrypt-auto certonly --standalone --email evan886@gmail.com -d linuxchina.net -d www.linuxchina.net --debug

IMPORTANT NOTES:
– Congratulations! Your certificate and chain have been saved at
/etc/letsencrypt/live/linuxchina.net/fullchain.pem. Your cert will
expire on 2016-12-11. To obtain a new or tweaked version of this
certificate in the future, simply run letsencrypt-auto again. To
non-interactively renew *all* of your certificates, run
“letsencrypt-auto renew”
– If you like Certbot, please consider supporting our work by:

Donating to ISRG / Let’s Encrypt: https://letsencrypt.org/donate
Donating to EFF: https://eff.org/donate-le

第三、Let’s Encrypt免费SSL证书获取与应用
在完成Let’s Encrypt证书的生成之后,我们会在”/etc/letsencrypt/live/yourdomain/”域名目录下有4个文件就是生成的密钥证书文件。
cert.pem – Apache服务器端证书
chain.pem – Apache根证书和中继证书
fullchain.pem – Nginx所需要ssl_certificate文件
privkey.pem – 安全证书KEY文件

ssl_certificate /etc/letsencrypt/live/linuxchina.net/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/linuxchina.net/privkey.pem;

#90天后自动更新
* * */90 * * /data/mon/autossl
#/bin/sh
/data/www/ssl/letsencrypt/letsencrypt-auto certonly --renew-by-default --email evan886@gmail.com -d linuxchina.net -d www.linuxchina.net

详细的nginx https配置文件

#4 blog
server {
listen 80;
# listen [::]:80 ipv6only=on default_server;
listen 443 default ssl;
#listen [::]:80;
#ssl on;
ssl_certificate /etc/letsencrypt/live/linuxchina.net/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/linuxchina.net/privkey.pem;

server_name linuxchina.net www.linuxchina.net;

#by evan
if ($scheme = http) {
return 301 https://$server_name$request_uri;
}
#by evan
# server_name blog.linuxchina.net;
charset utf-8;
root /data/www/evan;
index index.php index.html index.htm;

注意:
ssl on 不要打开 ,不然会400

#这个官方的教程比较好 其实
https://certbot.eff.org/#freebsd-nginx

http://stackoverflow.com/questions/8768946/dealing-with-nginx-400-the-plain-http-request-was-sent-to-https-port-error

实战申请Let’s Encrypt永久免费SSL证书过程教程及常见问题
http://www.laozuo.org/7676.html

Let’s Encrypt SSL证书配置
http://www.jianshu.com/p/eaac0d082ba2#

fnmp_conf


# cat /etc/nginx/nginx.conf
#20150915
user www;
worker_processes 2;

#error_log logs/error.log;
#error_log logs/error.log notice;
#error_log logs/error.log info;

pid logs/nginx.pid;

events {
worker_connections 1024;
}

http {
include 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 logs/access.log main;

sendfile on;
#tcp_nopush on;

#keepalive_timeout 0;
keepalive_timeout 65;

gzip on;

#4 blog
server {
listen 80;
server_name linuxchina.net;
# server_name blog.linuxchina.net;
charset utf-8;
root /word;
index index.php index.html index.htm;

# #access_log logs/host.access.log main;

location / {
try_files $uri $uri/ =404;
}

error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /word;
}
##
# # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
#
location ~ \.php$ {
try_files $uri =404;
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass unix:/var/run/php-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $request_filename;
include fastcgi_params;

# #location ~ \.php$ {
# # root html;
# # fastcgi_pass 127.0.0.1:9000;
# # fastcgi_index index.php;
# # fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;
# # include fastcgi_params;
# #}

}

}

include /usr/local/etc/nginx/hosts/*.conf;
}


server {
listen 80;
server_name evanlinux.com;
charset utf-8;
access_log off;
root /data/www/wiki;
index index.php index.htm index.html;
location ~ .*\.(gif|jpg|jpeg|png|bmp|ico|swf|html|htm|mp3|wma|js|css)$ {
expires 7d;
}

# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000

location ~ \.php$ {
try_files $uri =404;
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass unix:/var/run/php-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $request_filename;
include fastcgi_params;
}
}

#evan@bsdvps:~ % cat /usr/local/etc/nginx/hosts/wiki.conf
#include /usr/local/etc/nginx/hosts/*.conf;

WordPress自动升级要求输入FTP信息

换了os后 发现  在WordPress后台自动升级时,或者更新、删除主题或者插件的时候,老是提示需要输入FTP账户信息, 我了去 ,怎么这样,解决方法如下:

方法一、如果使用虚拟主机,可以在wp-config.php里加入下面代码:

define(“FS_METHOD”, “direct”);
define(“FS_CHMOD_DIR”, 0777);
define(“FS_CHMOD_FILE”, 0777);

方法二、如果使用独立服务器或VPS,可以修改网站所在目录属性:

chmod -R 755 /home/wwwroot
chown -R www /home/wwwroot

  其实出现这个的问题就是Apache/Nginx的执行身份非文件属主身份。

解决方法:

  假设你的wordpress安装目录为/home/wwwroot/wordpress

执行:

chown -R www /home/wwwroot/wordpress

  执行上面的命令就可以将/home/wwwroot/wordpress下所有文件的属主改为www,这样就可以解决自动更新必须填FTP的问题。

chown -R www *

就是把目录下所有文件和文件夹的所有者改成叫做www的用户。这样再去尝试WP的自动升级,一键升级就能顺利进行了。

注意:

必须是把wordpress程序文件上传到空间以后再执行该命令,顺序不能颠倒;
添加完虚拟主机以后,也必须把wordpress程序文件上传到空间以后,再执行该命令才有效!

nginx配置文件常用选项说明

改良后的nginx配置版本:

server {
listen 80;
server_name foo.com;

root /path;
index index.html index.htm index.php;

location / {
try_files $uri $uri/ /index.php$is_args$args;
}

location ~ \.php$ {
try_files $uri =404;

include fastcgi.conf;
fastcgi_pass 127.0.0.1:9000;
}
}

http://huoding.com/2013/10/23/290

Nginx中FastCGI参数的优化
在配置完成Nginx+FastCGI之后,为了保证Nginx下PHP环境的高速稳定运行,需要添加一些FastCGI优化指令。下面给出一个优化实例,将下面代码添加到Nginx主配置文件中的HTTP层级。
fastcgi_cache_path /usr/local/nginx/fastcgi_cache levels=1:2 keys_zone=TEST:10m inactive=5m;
fastcgi_connect_timeout 300;
fastcgi_send_timeout 300;
fastcgi_read_timeout 300;
fastcgi_buffer_size 64k;
fastcgi_buffers 4 64k;
fastcgi_busy_buffers_size 128k;
fastcgi_temp_file_write_size 128k;
fastcgi_cache TEST;
fastcgi_cache_valid 200 302 1h;
fastcgi_cache_valid 301 1d;
fastcgi_cache_valid any 1m;

下面是对上述代码的含义进行介绍。
第一行代码是为FastCGI缓存指定一个文件路径、目录结构等级、关键字区域存储时间和非活动删除时间。
fastcgi_connect_timeout指定连接到后端FastCGI的超时时间。
fastcgi_send_timeout指定向FastCGI传送请求的超时时间,这个值是已经完成两次握手后向FastCGI传送请求的超时时间。
fastcgi_read_timeout指定接收FastCGI应答的超时时间,这个值是已经完成两次握手后接收FastCGI应答的超时时间。
fastcgi_buffer_size用于指定读取FastCGI应答第一部分需要用多大的缓冲区,这个值表示将使用1个64KB的缓冲区读取应答的第一部分(应答头),可以设置为fastcgi_buffers选项指定的缓冲区大小。
fastcgi_buffers指定本地需要用多少和多大的缓冲区来缓冲FastCGI的应答请求。如果一个PHP脚本所产生的页面大小为256KB,那么会为其分配4个64KB的缓冲区来缓存;如果页面大小大于256KB,那么大于256KB的部分会缓存到fastcgi_temp指定的路径中,但是这并不是好方法,因为内存中的数据处理速度要快于硬盘。一般这个值应该为站点中PHP脚本所产生的页面大小的中间值,如果站点大部分脚本所产生的页面大小为256KB,那么可以把这个值设置为“16 16k”、“4 64k”等。
fastcgi_busy_buffers_size的默认值是fastcgi_buffers的两倍。
fastcgi_temp_file_write_size表示在写入缓存文件时使用多大的数据块,默认值是fastcgi_buffers的两倍。
fastcgi_cache表示开启FastCGI缓存并为其指定一个名称。开启缓存非常有用,可以有效降低CPU的负载,并且防止502错误的发生,但是开启缓存也会引起很多问题,要视具体情况而定。
fastcgi_cache_valid、fastcgi用来指定应答代码的缓存时间,实例中的值表示将200和302应答缓存一个小时,将301应答缓存1天,其他应答均缓存1分钟。

###*****************
#运行用户
userwww www ;
#启动进程,通常设置成和cpu的数量相等
worker_processes8;
#error_loglogs/error.log;
#error_loglogs/error.lognotice;
#error_loglogs/error.loginfo;
#PID文件
pidlogs/nginx.pid;
#这个指令是指当一个nginx进程打开的最多文件描述符数目,理论值应该是最多打开文件数,最好与ulimit -n 的值保持一致
worker_rlimit_nofile51200;
#工作模式及连接数上限
events {
#epoll是多路复用IO(I/OMultiplexing)中的一种方式,但是仅用于linux2.6以上内核,可以大大提高nginx的性能
use epoll;
#单个进程最大连接数(最大连接数=连接数*进程数)
worker_connections51200;
}
http {
includemime.types; #文件扩展名与文件类型映射表
default_typeapplication/octet-stream; #默认文件类型
server_names_hash_bucket_size 128;#服务器名字的hash表大小
client_header_buffer_size 32k;#上传文件大小限制
large_client_header_buffers 4 32k; #设定请求缓
client_max_body_size 8m; #设定请求缓
#sendfile 指令指定 nginx 是否调用 sendfile函数(zero copy 方式)来输出文件,对于普通应用,
#必须设为 on,如果用来进行下载等应用磁盘IO重负载应用,可设置为off,以平衡磁盘与网络I/O处理速度,降低系统的uptime.
sendfileon;
tcp_nopushon; #防止网络阻塞
tcp_nodelay on; #防止网络阻塞
keepalive_timeout120; #长连接超时时间,单位是秒
#FastCGI相关参数是为了改善网站的性能:减少资源占用,提高访问速度。下面参数看字面意思都能理解。
#服务器与脚本的接口
fastcgi_connect_timeout 300;
fastcgi_send_timeout 300;
fastcgi_read_timeout 300;
fastcgi_buffer_size 64k;
fastcgi_buffers 4 64k;
fastcgi_busy_buffers_size 128k;
fastcgi_temp_file_write_size 128k;
#gzip模块设置
gzipon; #开启gzip压缩输出
gzip_min_length 1k; #最小压缩文件大小
gzip_buffers 4 16k; #压缩缓冲区
gzip_http_version 1.1; #压缩版本(默认1.1,前端如果是squid2.5请使用1.0)
gzip_comp_level 2; #压缩等级
#压缩类型,默认就已经包含text/html,所以下面就不用再写了,写上去也不会有问题,但是会有一个warn。
gzip_types text/plainapplication/x-javascript text/css application/xml;
gzip_vary on;
upstream backend {
#每个请求按访问ip的hash结果分配,这样每个访客固定访问一个后端服务器,可以解决session的问题。
ip_hash;
server 192.168.28.191:80;
server 192.168.28.192:80;
#主机后面加down为备份
#可以用域名
}
#虚拟主机的配置
server {
listen80; #监听端口
server_namewww.test.com; #域名可以有多个,用空格隔开
#charset koi8-r;
#access_loglogs/host.access.logmain;
#对 "/" 启用反向代理
location / {
root/home/www/html;
indexindex.php index.html index.htm;
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;
proxy_pass http://backend; #请求转向mysvr 定义的服务器列表
}
location /nginx {
access_log off;
stub_status on; #开启nginx监控模块
}
#日志格式与贵重路径
log_formatmain'$remote_addr - $remote_user [$time_local] "$request" '
'$status$body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log /home/logs/access.log;
}
}

Web服务器之Nginx详解(理论部分)

http://ixdba.blog.51cto.com/2895551/806622

nginx php-fpm安装配置

nginx基本配置与参数说明
http://www.nginx.cn/76.html

各种lnmp

CentOS 7编译安装Nginx、MariaDB、PHP

CentOS 7.0编译安装Nginx+MySQL+PHP
yum how-to-install-lemp-linux-nginx-mariadb-php-fpm-on-a-centos-7-vps

RHEL / CentOS 7 yum 安裝 Nginx, MySQL, PHP (LEMP)

Install Nginx/PHP-FPM on Fedora 21/20, CentOS/RHEL 7/6.6/5.11
Linux+Nginx+Mysql+Php(FastCgi)源码安装

CentOS7最小化安装下源码编译搭建LAMP, LNMP环境及搭建discuz论坛

Unix 系统下的 Nginx 1.4.x

一些问题 selinux 也是要注意的哦 还有防火墙 不然会各种搞不明白哦

常用nginx编译选项

make是用来编译的,它从Makefile中读取指令,然后编译。

make install是用来安装的,它也从Makefile中读取指令,安装到指定的位置。

configure命令是用来检测你的安装平台的目标特征的。它定义了系统的各个方面,包括nginx的被允许使用的连接处理的方法,比如它会检测你是不是有CC或GCC,并不是需要CC或GCC,它是个shell脚本,执行结束时,它会创建一个Makefile文件。nginx的configure命令支持以下参数:

–prefix=path 定义一个目录,存放服务器上的文件 ,也就是nginx的安装目录。默认使用 /usr/local/nginx。
–sbin-path=path 设置nginx的可执行文件的路径,默认为 prefix/sbin/nginx.
–conf-path=path 设置在nginx.conf配置文件的路径。nginx允许使用不同的配置文件启动,通过命令行中的-c选项。默认为prefix/conf/nginx.conf.
–pid-path=path 设置nginx.pid文件,将存储的主进程的进程号。安装完成后,可以随时改变的文件名 , 在nginx.conf配置文件中使用 PID指令。默认情况下,文件名 为prefix/logs/nginx.pid.
–error-log-path=path 设置主错误,警告,和诊断文件的名称。安装完成后,可以随时改变的文件名 ,在nginx.conf配置文件中 使用 的error_log指令。默认情况下,文件名 为prefix/logs/error.log.
–http-log-path=path 设置主请求的HTTP服务器的日志文件的名称。安装完成后,可以随时改变的文件名 ,在nginx.conf配置文件中 使用 的access_log指令。默认情况下,文件名 为prefix/logs/access.log.
–user=name 设置nginx工作进程的用户。安装完成后,可以随时更改的名称在nginx.conf配置文件中 使用的 user指令。默认的用户名是nobody。
–group=name 设置nginx工作进程的用户组。安装完成后,可以随时更改的名称在nginx.conf配置文件中 使用的 user指令。默认的为非特权用户。
–with-select_module –without-select_module 启用或禁用构建一个模块来允许服务器使用select()方法。该模块将自动建立,如果平台不支持的kqueue,epoll,rtsig或/dev/poll。
–with-poll_module –without-poll_module 启用或禁用构建一个模块来允许服务器使用poll()方法。该模块将自动建立,如果平台不支持的kqueue,epoll,rtsig或/dev/poll。
–without-http_gzip_module — 不编译压缩的HTTP服务器的响应模块。编译并运行此模块需要zlib库。
–without-http_rewrite_module 不编译重写模块。编译并运行此模块需要PCRE库支持。
–without-http_proxy_module — 不编译http_proxy模块。
–with-http_ssl_module — 使用https协议模块。默认情况下,该模块没有被构建。建立并运行此模块的OpenSSL库是必需的。
–with-pcre=path — 设置PCRE库的源码路径。PCRE库的源码(版本4.4 – 8.30)需要从PCRE网站下载并解压。其余的工作是Nginx的./ configure和make来完成。正则表达式使用在location指令和 ngx_http_rewrite_module 模块中。
–with-pcre-jit —编译PCRE包含“just-in-time compilation”(1.1.12中, pcre_jit指令)。
–with-zlib=path —设置的zlib库的源码路径。要下载从 zlib(版本1.1.3 – 1.2.5)的并解压。其余的工作是Nginx的./ configure和make完成。ngx_http_gzip_module模块需要使用zlib 。
–with-cc-opt=parameters — 设置额外的参数将被添加到CFLAGS变量。例如,当你在FreeBSD上使用PCRE库时需要使用:–with-cc-opt=”-I /usr/local/include。.如需要需要增加 select()支持的文件数量:–with-cc-opt=”-D FD_SETSIZE=2048″.
–with-ld-opt=parameters —设置附加的参数,将用于在链接期间。例如,当在FreeBSD下使用该系统的PCRE库,应指定:–with-ld-opt=”-L /usr/local/lib”.

nginx官方编译选项

Nginx安装