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 查看其父进程


致读者: 小时百科一直以来坚持所有内容免费无广告,这导致我们处于严重的亏损状态。 长此以往很可能会最终导致我们不得不选择大量广告以及内容付费等。 因此,我们请求广大读者热心打赏 ,使网站得以健康发展。 如果看到这条信息的每位读者能慷慨打赏 20 元,我们一周就能脱离亏损, 并在接下来的一年里向所有读者继续免费提供优质内容。 但遗憾的是只有不到 1% 的读者愿意捐款, 他们的付出帮助了 99% 的读者免费获取知识, 我们在此表示感谢。

                     

友情链接: 超理论坛 | ©小时科技 保留一切权利