nginx 学习记录:IP+端口号配置网站、隐藏端口号、自签名证书配置Https、强制Https、自定义404...

几点心得

1. 如果没有显式声明 default server 则第一个 server 会被隐式的设为 default server
1. 443后面一定要加ssl,不然http会被重定向到https
1. 静态资源在上游服务器上,而不是当前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;
}

网站配置清单

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/ 加到这个域名网站配置

完整学习的配置文件 (都在一个 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 index.nginx-debian.html;
}

#################
server {
    listen 80 ;
    # listen [::]:80 ;

    server_name  test1621.wzh;

    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/;
    }
}

server {
    listen 443  ; # ssl ;
    # listen [::]:443; #  ssl ;
    # ssl on;

    server_name  test1621.wzh;

    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 https://192.168.1.162:4001;
     }
}

转载于:https://my.oschina.net/u/1440971/blog/3006355

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值