Nginx 笔记

                     

贡献者: addis

  • 本文处于草稿阶段。

1. http 静态网站

2. 使用 https

  

未完成:如何使用通配符证书用于任意子域名?
未完成:如果通过 DNS 记录申请证书而不是 80 和 443 端口?

创建多个网站

3. 反向代理其他网站

   比如你在国内访问 github 很慢,但在美国有一个私人服务器,那么你可以用 Nginx 作为反向代理,这样你就可以访问你代理服务器的域名了。

   同样只需要在设置中添加一个 server section 即可

   如果只需要 http 代理,用

server {
   listen 80;
   server_name 公网ip或域名;

   location / {
       proxy_pass https://github.com/;
       proxy_set_header Host github.com;
       proxy_set_header X-Real-IP $remote_addr;
       proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
   }
}

   如果需要 https 代理,用

server {
  listen 443 ssl;
  server_name 域名;

  ssl_certificate /etc/letsencrypt/live/域名/fullchain.pem;
  ssl_certificate_key /etc/letsencrypt/live/域名/privkey.pem;

  location / {
    proxy_pass https://github.com/;
    proxy_set_header Host github.com;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  }
}

   尝试了对 wikipedia 也进行反向代理,但根据 wikipedia 的设置浏览器 ulr 总是会跳转回 wikipedia.org,GPT-4 建议在 location 中添加以下设置,但仍然无效。这可能超出了 nginx 的能力范围。

proxy_set_header Referer "";
proxy_redirect https://wikipedia.org/ $scheme://$host/;

# Enable URL rewriting
sub_filter_once off;
sub_filter_types *;
sub_filter 'https://wikipedia.org' '$scheme://$host';
sub_filter 'https://www.wikipedia.org' '$scheme://$host';

   注意 nginx 存在客户端单文件上传大小限制(默认不足 100M),要修改全局限制,在 http { 后面的设置中加上 client_max_body_size 10000M;

http {

        ##
        # Basic Settings
        ##

        sendfile on;
        tcp_nopush on;
        types_hash_max_size 2048;
        client_max_body_size 10000M;

4. 多个域名和网站

5. 端口被占用

   如果端口被占用,那么 nginx service 将无法启动

Oct 04 10:41:33 bandwagon2 nginx[1955]: nginx: [emerg] bind() to [::]:80
failed (98: Unknown error)
Oct 04 10:41:33 bandwagon2 nginx[1955]: nginx: [emerg] still could not bind()
Oct 04 10:41:33 bandwagon2 systemd[1]: nginx.service: Control process exited,
code=exited, status=1/FAILURE
Oct 04 10:41:33 bandwagon2 systemd[1]: nginx.service: Failed with result
'exit-code'. Oct 04 10:41:33 bandwagon2 systemd[1]: Failed to start
A high performance
web server and a reverse proxy server.
此时可以用 sudo lsof -i :80 查看端口被什么进程占用,如果这是某个子进程,也可以用 ps -o ppid= -p 进程id 查看其父进程

                     

© 小时科技 保留一切权利