Apache-2.2

NGINX 埠代理不工作

  • January 12, 2016

我正在努力做到這一點,而不是輸入“www.example.com:8080”,而是輸入“www.example.com”。我正在使用 NGINX,但我似乎無法讓它工作。我在網上找到了許多有用的文章,他們都說要做我嘗試過但不起作用的相同事情。

我在 ubuntu apache2 伺服器上執行

這是我所做的:

  1. sudo 進入位於 /etc/nginx/site-enabled/default 的配置文件
  2. 上面寫著聽 80 的地方,把它改成聽 8080
  3. sudo 服務 nginx 重啟

但是,這似乎沒有任何效果。

預設

# You may add here your
# server {
#    listen       80;
#    server_name  graychat.net;

#    location / {
#        proxy_pass http://127.0.0.1:8080;
#    }
# }
# statements for each of your virtual hosts to this file

##
# You should look at the following URL's in order to grasp a solid understanding
# of Nginx configuration files in order to fully unleash the power of Nginx.
# http://wiki.nginx.org/Pitfalls
# http://wiki.nginx.org/QuickStart
# http://wiki.nginx.org/Configuration
#
# Generally, you will want to move this file somewhere, and start with a clean
# file but keep this around for reference. Or just disable in sites-enabled.
#
# Please see /usr/share/doc/nginx-doc/examples/ for more detailed examples.
##

server {
       listen 8080 default_server;
       listen [::]:8080 default_server ipv6only=on;

       root /usr/share/nginx/html;
       index index.html index.htm;

       # Make site accessible from http://localhost/
       server_name localhost;

       location / {
               # First attempt to serve request as file, then
               # as directory, then fall back to displaying a 404.
               try_files $uri $uri/ =404;
               # Uncomment to enable naxsi on this location
               # include /etc/nginx/naxsi.rules
       }

       # Only for nginx-naxsi used with nginx-naxsi-ui : process denied requests
       #location /RequestDenied {
       #       proxy_pass http://127.0.0.1:8080;
       #}

       #error_page 404 /404.html;
       # redirect server error pages to the static page /50x.html
       #
       #error_page 500 502 503 504 /50x.html;
       #location = /50x.html {
       #       root /usr/share/nginx/html;
       #}

       # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
       #
       #location ~ \.php$ {
       #       fastcgi_split_path_info ^(.+\.php)(/.+)$;
       #       # NOTE: You should have "cgi.fix_pathinfo = 0;" in php.ini
       #
       #       # With php5-cgi alone:
       #       fastcgi_pass 127.0.0.1:9000;
       #       # With php5-fpm:
       #       fastcgi_pass unix:/var/run/php5-fpm.sock;
       #       fastcgi_index index.php;
       #       include fastcgi_params;
       #}

       # deny access to .htaccess files, if Apache's document root
       # concurs with nginx's one
       #
       #location ~ /\.ht {
       #       deny all;
       #}
}


# another virtual host using mix of IP-, name-, and port-based configuration
#
#server {
#       listen 8000;
#       listen somename:8080;
#       server_name somename alias another.alias;
#       root html;
#       index index.html index.htm;
#
#       location / {
#               try_files $uri $uri/ =404;
#       }
#}
# HTTPS server
#
#server {
#       listen 443;
#       server_name localhost;
#
#       root html;
#       index index.html index.htm;
#
#       ssl on;
#       ssl_certificate cert.pem;
#       ssl_certificate_key cert.key;
#
#       ssl_session_timeout 5m;
#
#       ssl_protocols SSLv3 TLSv1 TLSv1.1 TLSv1.2;
#       ssl_ciphers "HIGH:!aNULL:!MD5 or HIGH:!aNULL:!MD5:!3DES";
#       ssl_prefer_server_ciphers on;
#
#       location / {
#               try_files $uri $uri/ =404;
#       }
#}

我對上面的預設配置文件進行了以下編輯並重新啟動,但它似乎仍然不起作用

server {
       listen 80 default_server;
       listen [::]:80 default_server ipv6only=on;

       root /usr/share/nginx/html;
       index index.html index.htm;

       # Make site accessible from http://localhost/
       server_name localhost;

       location / {
               proxy_pass 127.0.0.1:8080;
               # First attempt to serve request as file, then
               # as directory, then fall back to displaying a 404.
               # try_files $uri $uri/ =404;
               # Uncomment to enable naxsi on this location
               # include /etc/nginx/naxsi.rules
       }
....
}

—已解決的問題—

我的配置文件沒有任何問題。當我查閱 /var/log/nginx/error.log 時,我看到了錯誤

[emerg]: bind() to 0.0.0.0:80 failed (98: Address already in use)

所以我執行了以下命令:

sudo fuser -k 80/tcp
service nginx start

一切正常:)

你把它倒過來了。

埠 80 是預設的 HTTP 埠,因此鍵入www.example.com與鍵入相同www.example.com:80

將您的 listen 指令改回listen 80;,確保您以 root 身份啟動 nginx 並且該埠沒有在防火牆中被阻止,您應該很好。

如果您的後端應用程序已經在偵聽埠 8080,您想告訴 nginx 將請求路由到該地址。

location / {
   proxy_pass http://127.0.0.1:8080;
}

這樣,當請求從 80 埠進入時,nginx 會將其發送到埠 8080 上的應用程序,該應用程序會將響應返回給 nginx - 然後將其返回給從未在任何地方看到埠 8080 的使用者。

引用自:https://serverfault.com/questions/748363