1.Nginx下载与安装
Nginx下载:http://nginx.org/en/download.html
打开目录应该是这样的
进入到nginx目录下,双击nginx.exe文件即可启动服务器。在浏览器地址栏输入http://localhost,如果可以成功访问到Nginx的欢迎界面,则说明安装成功。
2.OpenSSL下载与安装
OpenSSl下载:http://slproweb.com/products.html
在下载地址下载相应版本(win32或win64)的安装包后安装到指定目录我下到了D盘
然后在系统环境变量中添加环境变量:
变量名:OPENSSL_HOME
变量值:D:\OpenSSL\bin;
(变量值为OPENSSL安装位置下的bin目录)
并在Path变量结尾添加: %OPENSSL_HOME%
3.生成加密证书
在nginx目录下新建ssl文件夹:
打开cmd进入nginx目录ssl文件夹下运行:
openssl genrsa -des3 -out wodekey.key 1024 # 文件名自定义
两次输入密码,然后记下来
3.1生成并创建csr证书
openssl req -new -key wodekey.key -out wodekey.csr
我在这个时候遇到了问题,报了这个错:Unable to load config info from /usr/local/ssl/openssl.cnf
原因:原来这是Unix的默认设置,
解决:就是按照路径新建文件c:/usr/local/ssl,从网上下载openssl.conf,然后改为openssl.cnf,置于c:/usr/local/ssl目录下
然后解决之后继续,执行命令,输入一系列的信息。信息中Common Name是我们要使用https访问的域名例如localhost。其它的内容随便填即可。此时ssl文件夹里应该有:wodekey.csr 和wodekey.key两个文件。
3.1.1除去口令密码
在加载SSL支持的Nginx并使用上述私钥时除去必须的口令,否则会在启动nginx的时候需要输入密码。
复制wodekey.key并重命名为wodekey.key.org。
在命令行中执行如下命令以去除口令:
openssl rsa -in wodekey.key.org -out wodekey.key
然后输入密码,这个密码就是上文中在创建私钥的时候输入的密码。
3.1.2生成csr证书
openssl x509 -req -days 365 -in wodekey.csr -signkey wodekey.key -out wodekey.crt
生成证书完成,ssl文件夹里有4个文件 wodekey.crt 、 wodekey.csr 、 wodekey.key 、 wodekey.key.org 。
4.修改Nginx,修改nginx.conf配置文件
修改后如下:
#user nobody;
worker_processes 1;
#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;
# another virtual host using mix of IP-, name-, and port-based configuration
#
#server {
# listen 8000;
# listen somename:8080;
# server_name somename alias another.alias;
# location / {
# root html;
# index index.html index.htm;
# }
#}
# HTTPS server
#
server {
listen 443 ssl;
server_name localhost;
ssl_certificate D://nginx-1.14.2//nginx-1.14.2//ssl//wodekey.crt; #刚才生成的证书的地址
ssl_certificate_key D://nginx-1.14.2//nginx-1.14.2//ssl//wodekey.key; #刚才生成的证书的地址
ssl_session_cache shared:SSL:1m;
ssl_session_timeout 5m;
ssl_ciphers HIGH:!aNULL:!MD5;
ssl_prefer_server_ciphers on;
location / {
root html;
index index.html index.htm;
# proxy_pass http://10.*.*.**:8080/;这个是代理到我的tomcat的地址
}
}
}
4.1Nginx的常用操作和常见错误信息及解决办法
Windows命令行中操作Nginx的几个常用的语句:
start nginx # 启动Nginx
nginx.exe -s stop # 快速停止Nginx,可能并不保存相关信息
nginx.exe -s quit # 完整有序的停止Nginx,并保存相关信息
nginx.exe -s reload # 重新载入Nginx,当配置信息修改,需要重新载入这些配置时使用此命令。
nginx.exe -s reopen # 重新打开日志文件
nginx -v # 查看Nginx版本
因为修改了配置文件,所以需要退出控制台,并重新打开一个控制台。nginx目录下执行如下命令:
nginx.exe -s quit
start nginx
即退出Nginx,然后再重新启动它。这时候,在浏览器地址栏输入https://localhost并回车。
这时候,你可能看到“您的连接不是私密连接”的提示,单击页面中的“高级”,并接着单击“继续前往localhost(不安全)”,就可以看到Nginx的欢迎界面了。说明https服务器已经配置成功了。
如果你只想用https://localhost访问这个https服务器,那么下面的内容你就不用接着往下看了。
但是,也许你可能还想要用一个别的域名(例如:https://xxx.yyy.com)来访问这个服务器。那么怎么做呢?这就需要继续往下看了。
4.2修改hosts配置,实现域名映射
要想用别的域名来访问上文配置好的https服务器,也很简单,修改hosts配置就可以了。你可以到这里下载一个hosts管理工具——SwitchHosts。安装号好之后,以管理员身份运行它。并添加上一个hosts项:
127.0.0.1 xxx.yyy.com
这样,你就可以通过https://xxx.yyy.com来访问配置好的https服务器了。
5.windows环境下cmd命令窗口执行nginx命令常见异常及解决
异常:10013: An attempt was made to access a socket in a way forbidden
原因:出现这个异常是端口被占用
解决:
1. 按键盘win+r 打开运行界面,输入cmd,确定,打开控制台界面
2.输入 netstat -aon | findstr : 端口号 ,查看占用端口信息
3.输入 tasklist|findstr "占用的服务pid" 查看占用服务的名称
4.打开任务管理器关闭服务
5.重启nginx搞定
异常:[error] OpenEvent("Global\ngx_stop_25184") failed (2: The system cannot find the file specified)
原因:nginx服务未启动
解决:重启nginx,打开任务管理器确认是否启动,如果还未启动,打开nginx目录下log包,查看日志
异常:无法找到 "logs/nginx.pid"
原因:当nginx被停止(nginx -s stop)或者直接杀掉了进程(kill -9 nginx的进程号)或者意外重启后,调用命令(nginx -s reload 或 nginx -s reopen)会报错,nginx被停止时,nginx.pid被删除了。 而 reopen和 reload命令需要通过nginx.pid获取进程号,会去找nginx.pid ,如果不存在,就报错了。
解决:下 在nginx的 logs/新建一个nginx.pid 文件,之后运行 nginx -c /mynginx/conf/nginx.conf #mynginx是我的nginx目录, nginx -c 为指定目录的配置文件 nginx.conf
查看任务管理器,开nginx服务是否启动正常,一般为两个
本博文参考了:https://www.cnblogs.com/chasewade/p/7661290.html,十分感谢