因为这个项目中,所有的跳转都是用了laravel的 secure_url 函数来跳转,这个函数就是为应用程序生成一个HTTPS url。
但是我的MAC就没有配置到HTTPS秘钥,所以点击时候,是这样的
所以现在需要在我的NGINX中,配置https
第一步 生成私钥
openssl genrsa -des3 -out private.key 2048
第二步 生成证书请求
openssl req -new -key private.key -out server.csr
第三步 生成服务器的私钥
openssl rsa -in private.key -out server.key
第四步 使用私钥为证书请求签名,生成给服务器签署的证书,格式是x509的PEM格式
sudo openssl x509 -req -in server.csr -out server.crt -signkey server.key -days 3650
此时会生成以下三个文件,再去nginx 配置文件中,监听https
监听HTTPS请求
添加
# ssl配置
ssl on;
ssl_certificate /usr/local/etc/nginx/server.crt;
ssl_certificate_key /usr/local/etc/nginx/server.key;
具体如下:
server {
listen 80; # http端口监听
server_name www.test.com;
index index.html index.htm index.php;
# ssl配置
ssl on;
ssl_certificate /usr/local/etc/nginx/server.crt;
ssl_certificate_key /usr/local/etc/nginx/server.key;
location / {
rewrite . /index.php last;
}
}
ngnix -s reload 重启的时候,这样的配置,遇到了一个问题
nginx: [warn] the "ssl" directive is deprecated, use the "listen ... ssl" directive instead in /usr/local/etc/nginx/servers/moremkt:12
解决:
该问题是由于新版nginx采用新的方式进行监听https请求了
把 ssl on; 去掉
替换成 listen 443 ssl; 就可以了
下面是最终的配置文件
server {
# ssl on;
listen 443 ssl; #监听HTTPS
listen 80; #监听HTTP
server_name www.more.mkt.net;
#charset koi8-r;
#access_log /usr/local/var/log/nginx/access.log main;
# root /usr/local/var/www/more_mkt/public;
root /Users/mkc/Documents/www/more_mkt/public;
ssl_certificate /usr/local/etc/nginx/server.crt;
ssl_certificate_key /usr/local/etc/nginx/server.key;
location / {
index index.html index.htm index.php;
try_files $uri $uri/ /index.php$is_args$args;
}
#error_page 404 /404.html;
#error_page 502 /502.html;
location ~ \.php$ {
try_files $uri /index.php =404;
fastcgi_pass 127.0.0.1:9003;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
#error_page 404 /404.html;
# redirect server error pages to the static page /50x.html
#error_page 500 502 503 504 /50x.html;
#location = /50x.html {
# root html;
#}
location ~ .*\.(html|htm|css|js|png|ico|woff2|woff|ttf|swf)$ {
root /Users/mkc/Documents/www/more_pc/public;
}
#deny access to .htaccess files, if Apache's document root
#concurs with nginx's one
#
location ~ /\.ht {
deny all;
}
}
然后就可以请求https啦