nginx 隐藏端口号、自签名https、强制https
几点心得如果没有显式声明 default server 则第一个 server 会被隐式的设为 default server443后面一定要加ssl,不然http会被重定向到https静态资源在上游服务器上,而不是当前nginx直接提供学习环境VisualBox 虚拟机 ubuntu 16.04 (网址:192.168.1.162)通过 sudo apt install nginx...
几点心得
- 如果没有显式声明 default server 则第一个 server 会被隐式的设为 default server
- 443后面一定要加ssl,不然http会被重定向到https
- 静态资源在上游服务器上,而不是当前nginx直接提供
学习环境
VisualBox 虚拟机 ubuntu 16.04 (网址:192.168.1.162)
通过 sudo apt install nginx 安装 nginx
学习建议
所有的实例里面都是将 80 和 443 端口在同一个 Server {…} 完成的
开始时不好理解,干脆全部拆开,一个 Server {…} 里面只 listen 一个端口
开始时全部在 default 里面配置,熟练之后,再拆分独立到一个一个的网站配置
** 其实我开始时不是以上这样子的,都是按照通行的办法开始的
** 因为我发现同事配置网站全都删除了default
** 对于 defult 的理解不到位,才使得我用了以上笨办法,
1、IP+端口号配置网站
和普通配置其实是一样的,只是 Listen 的端口号不是 80 和 443
2、自签名证书配置Https
自签名证书制作不在这里介绍
配置自签名证书和通用证书方式其实是一样的
3、强制 https
参考:
https://www.cnblogs.com/yun007/p/3739182.html 这里有很详细的介绍,我选择了第一种:rewrite方法
4、隐藏端口号
通过 proxy_pass 反向代理,将域名配置的网站直接指向之前使用 ip + 端口号 配置的网站
server_name_in_redirect off;
proxy_set_header Host $host:$server_port;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header REMOTE-HOST $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
location / {
proxy_pass http://192.168.1.162:8001/;
}
5、自定义 404 页面
参考
https://www.cnblogs.com/paul8339/p/7389422.html
现在没有加上 php,所以使用方法一
error_page 404 /404.html;
location = /404.html {
root /var/www/html;
}
6、网站配置清单
http://192.168.1.162/
https://192.168.1.162/
http://192.168.1.162:8001/
https://192.168.1.162:4001/
http://test1621.wzh
https://test1621.wzh
这才是最终目的
http://test1621.wzh 会转向 http://192.168.1.162:8001/
httpss://test1621.wzh 会转向 http://192.168.1.162:4001/
如果也需要强制https 可以按照 http://192.168.1.162/ 加到这个域名网站配置
7、完整学习的配置文件 (都在一个 default 里面)
server {
listen 80 ; # default_server;
# listen [::]:80 ; # default_server;
# SSL configuration
# listen 443 ssl ; # default_server;
# listen [::]:443 ssl ; # default_server;
# ssl on;
# ssl_certificate /var/www/cert2019/wyserver.crt;
# ssl_certificate_key /var/www/cert2019/wyserver.key;
root /var/www/html;
# Add index.php to the list if you are using PHP
index index.html index.htm index.nginx-debian.html;
server_name _;
# add by wzh 20190126 强制https
rewrite ^(.*)$ https://$host$request_uri$1 permanent;
location / {
try_files $uri $uri/ =404;
}
error_page 404 /404.html;
location = /404.html {
root /var/www/html;
}
}
server { # SSL configuration listen 443 ssl ; # default_server; # listen [::]:443 ssl ; # default_server;
ssl on;
ssl_certificate /var/www/cert2019/wyserver.crt;
ssl_certificate_key /var/www/cert2019/wyserver.key;
root /var/www/html;
# Add index.php to the list if you are using PHP
index index.html index.htm index.nginx-debian.html;
server_name _;
location / {
try_files $uri $uri/ =404;
}
error_page 404 /404.html;
location = /404.html {
root /var/www/html;
}
}
Virtual Host configuration for example.com
server { listen 8001 ; # listen [::]:8001 ;
server_name 192.168.1.162;
# add by wzh 20190126 强制https
rewrite ^(.*)$ https://192.168.1.16:4001 permanent;
root /var/www/test123;
# Add index.php to the list if you are using PHP
index index.html index.htm index.nginx-debian.html;
}
############### server { listen 4001 ssl; # listen [::]:4001 ssl;
server_name 192.168.1.162;
ssl on;
ssl_certificate /var/www/cert2019/wyserver.crt;
ssl_certificate_key /var/www/cert2019/wyserver.key;
root /var/www/test123;
# Add index.php to the list if you are using PHP
# index index.html index.htm inde
更多推荐
所有评论(0)