Назад | Перейти на главную страницу

nginx работает на LAN IP, но не на публичном IP

Я установил веб-сервер nginx с uwsgi для размещения моего флеш-приложения. Когда я обращаюсь к нему через IP-адрес локальной сети (192.168.1.x), я получаю веб-сайт нормально, но когда я получаю доступ к нему через свой общедоступный IP-адрес, меня приветствует «404 Not Found nginx / 1.14.0 (Ubuntu)». Почему это? Как я могу это исправить?

/etc/nginx/nginx.conf

user www-data;
worker_processes auto;
pid /run/nginx.pid;
include /etc/nginx/modules-enabled/*.conf;

events {
    worker_connections 768;
    # multi_accept on;
}

http {

    ##
    # Basic Settings
    ##

    sendfile on;
    tcp_nopush on;
    tcp_nodelay on;
    keepalive_timeout 65;
    types_hash_max_size 2048;
    # server_tokens off;

    # server_names_hash_bucket_size 64;
    # server_name_in_redirect off;

    include /etc/nginx/mime.types;
    default_type application/octet-stream;

    ##
    # SSL Settings
    ##

    ssl_protocols TLSv1 TLSv1.1 TLSv1.2; # Dropping SSLv3, ref: POODLE
    ssl_prefer_server_ciphers on;

    ##
    # Logging Settings
    ##

    access_log /var/log/nginx/access.log;
    error_log /var/log/nginx/error.log;

    ##
    # Gzip Settings
    ##

    gzip on;

    # gzip_vary on;
    # gzip_proxied any;
    # gzip_comp_level 6;
    # gzip_buffers 16 8k;
    # gzip_http_version 1.1;
    # gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;

    ##
    # Virtual Host Configs
    ##

    include /etc/nginx/conf.d/*.conf;
    include /etc/nginx/sites-enabled/*;
}


#mail {
#   # See sample authentication script at:
#   # http://wiki.nginx.org/ImapAuthenticateWithApachePhpScript
# 
#   # auth_http localhost/auth.php;
#   # pop3_capabilities "TOP" "USER";
#   # imap_capabilities "IMAP4rev1" "UIDPLUS";
# 
#   server {
#       listen     localhost:110;
#       protocol   pop3;
#       proxy      on;
#   }
# 
#   server {
#       listen     localhost:143;
#       protocol   imap;
#       proxy      on;
#   }
#}

сайты-доступные

server {
    listen 80;
    server_name 192.168.1.108;

    location / {
        include uwsgi_params;
        uwsgi_pass unix:/home/matthew/myproject/myproject.sock;
    }
}

project.ini

[uwsgi]
module = wsgi:app

master = true
processes = 5

socket = myproject.sock
chmod-socket = 660
vacuum = true

die-on-term = true

Вы специально просили, чтобы ваш веб-сайт отвечал только на IP-адрес RFC1918:

    server_name 192.168.1.108;

Ваш глобальный IP-адрес не 192.168.1.108, поэтому он никогда не будет соответствовать этому server блок, и, следовательно, будет обслуживаться по умолчанию server блок.

Чтобы решить эту проблему, купите доменное имя, установите адресную запись для имени в своем домене, а затем установите server_name к этому имени.

У нас есть 3 возможности - в зависимости от ваших будущих потребностей

Вариант первый:

/ и т. д. / nginx / сайты с включенным / optionone

server {
listen 80;
server_name 192.168.1.108 1.2.3.4;

location / {
    include uwsgi_params;
    uwsgi_pass unix:/home/matthew/myproject/myproject.sock;
}
}

Все в одном, легко читать

вариант второй

/ и т. д. / nginx / сайты-доступный / optiontwo

server {
listen 80;
server_name 192.168.1.108;

location / {
    include uwsgi_params;
    uwsgi_pass unix:/home/matthew/myproject/myproject.sock;
}
}
server {
listen 80;
server_name 1.2.3.4;

location / {
    include uwsgi_params;
    uwsgi_pass unix:/home/matthew/myproject/myproject.sock;
}
}

Также легко читать, но разделяет его на 2 отдельных экземпляра, удобных для отладки

и

вариант третий

/ и т. д. / nginx / сайты-включен / вариант-три-инт

server {
listen 80;
server_name 192.168.1.108;

location / {
    include uwsgi_params;
    uwsgi_pass unix:/home/matthew/myproject/myproject.sock;
}
}

/ и т.д. / Nginx / сайты-включен / вариант-три-паб

server {
listen 80;
server_name 1.2.3.4;

location / {
    include uwsgi_params;
    uwsgi_pass unix:/home/matthew/myproject/myproject.sock;
}
}

Каждый сайт получает свой собственный файл, который удобно обрабатывать позже, то есть для certbot, и его действительно легко читать позже и знать, какой файл что делает.

Как видите, это можно сделать несколькими способами, так как у каждого есть свои «что делать, а что нет».

Напоминание:

Не забудьте активировать (привязать) сайт к сайтам с поддержкой